日期:2014-05-18  浏览次数:20629 次

十萬火急,SQl Server四舍五入的問題
我從SQL   Server里取了數據50和0.3999,可是乘出來的結果確實19.994999,我保留2位小數,就成了19.99,但實際結果應該是19.995,四舍五入就是20.00啊?這是怎麼回事?那位高手幫忙解決,十萬火急

------解决方案--------------------
select LTRIM(RTRIM(STR(ROUND(50*0.3999, 2),15,2)))
------解决方案--------------------
原因是计算机里面的2进制数不能表示所有的小数,2进制的数是有限的,而小数是无限多的。

如果你是保存2位小数的话,你看能不能在计算之前对0.3999四舍五入。
------解决方案--------------------
是用round方法吧
我知道oracle里的四舍五入是用round()方法
------解决方案--------------------
口算就很方便:( 0.3999/2*100 把小数相乘除变为整数相乘除.
double d=0.3999d;d=d*10000;d=d/200;