select round(cast('428.79' as float)*cast('45' as float),5)
得出来的结果是19295.549999999999,为什么不是小数点后五位呢?
但是用这个select round(19295.549999999999,5),得出来就是19295.550000000000
为什么呢??谢谢大家
使用SQL 中的round,为什么会这样???
答案:2 悬赏:10
解决时间 2021-03-05 22:31
- 提问者网友:美人如花
- 2021-03-05 03:21
最佳答案
- 二级知识专家网友:苦柚恕我颓废
- 2021-03-05 04:07
ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
所以Round没有改变原有的类型,所以出现上面的情况
建议用CONVERT() 或者CAST()转换下类型
所以Round没有改变原有的类型,所以出现上面的情况
建议用CONVERT() 或者CAST()转换下类型
全部回答
- 1楼网友:说多了都是废话
- 2021-03-05 05:21
select 123.12567, round(123.12567, 3, 1), round(123.12567, 3, 0), round(123.12567, -2)
看上面的例子
第一个参数是结果保留的小数位数,可以是负数,负数的时候就是保留小数点前几位了
第二个参数一般不使用,默认是0,自动进行四舍五入,如果不是0的话,就不四舍五入了,而是直接把需要保留的小数位数后面的数据“砍断”
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯