问题遇到的现象和发生背景
前台用户会传一个参数,代表这个数值他要多少位,数据库一个字段的一个值是12345 ,然后前台比传4,那么数据库需要用sql查出来是12344位,如果同样的数字用户传6,那么查出来应该要是123456.0 请问这个sql咋写
前台用户会传一个参数,代表这个数值他要多少位,数据库一个字段的一个值是12345 ,然后前台比传4,那么数据库需要用sql查出来是12344位,如果同样的数字用户传6,那么查出来应该要是123456.0 请问这个sql咋写
乍一看以为是精度问题,但细看,这不对呀,这问题描述是不是有问题?
123456.0这不是7位了么?而且你12345是咋变成的123456.0呀?这个转换规则到底是怎样的?
其实吧,对于数字而言,小数点后面末尾的0没有任何意义,你现在要求的是显示成你想要的格式,那么这个时候,它其实是按照你要求显示的字符串了,应该用to_char去格式化它
select to_char(123456,'fm999999999999990.0000000000');
像这个sql,小数点后面接多少个0,它就会保留小数点后多少位进行显示。
但你这个需求明显有问题,如果数据库里存个1,然后用户传个10,你难道给他显示1.000000000?这有什么意义?而且你问题里,数据库存12345,传4,显示1234,这数字大小都变了啊,这不是个错的么?