十萬火急,SQl Server四舍五入的問題

mklv 2007-08-28 11:37:13
我從SQL Server里取了數據50和0.3999,可是乘出來的結果確實19.994999,我保留2位小數,就成了19.99,但實際結果應該是19.995,四舍五入就是20.00啊?這是怎麼回事?那位高手幫忙解決,十萬火急
...全文
447 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
livan1038 2007-08-28
  • 打赏
  • 举报
回复
select LTRIM(RTRIM(STR(ROUND(50*0.3999, 2),15,2)))
mklv 2007-08-28
  • 打赏
  • 举报
回复
我都用BigDecimal.ROUND_HALF_DOWN做了四舍五入的處理,可是還不行.急!!
IhaveGotYou 2007-08-28
  • 打赏
  • 举报
回复
口算就很方便:( 0.3999/2*100 把小数相乘除变为整数相乘除.
double d=0.3999d;d=d*10000;d=d/200;
mklv 2007-08-28
  • 打赏
  • 举报
回复
先把0.3999四舍五入的話,算的結果就完全不一樣了
用select LTRIM(RTRIM(STR(ROUND(50*0.3999, 2),15,2)))也不行,因為我這些數據都是從SQLSERVER中調出來的,只能用變量來表示,算出來的結果還是一樣
平生我自如 2007-08-28
  • 打赏
  • 举报
回复
是用round方法吧
我知道oracle里的四舍五入是用round()方法
yztommyhc 2007-08-28
  • 打赏
  • 举报
回复
原因是计算机里面的2进制数不能表示所有的小数,2进制的数是有限的,而小数是无限多的。

如果你是保存2位小数的话,你看能不能在计算之前对0.3999四舍五入。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧