为什么double型的0.29*100让后结果是28.999999999999996
转化整型的时候会截断小数位变成28了,朋友开发一个java项目做折扣计算的时候出现这个问题了。结果发现.Net也是这样。不光是0.29 0.57的时候也会变成56.9999999X
8回答
-
潇潇雨雨
decimal a = 0.29m
这样的计算方式就是精确的。
dobule和float 比如1.0 在计算机中可能表现为0.9999999999999999999或者是 1.000000000000001
这2种形式
-
胡子哥哥
在金额使用的话:用decimal 比较。。小数点后几位 你可以按位截取的
普通的应用:应用Double Double也是可以截取的
-
蝴蝶不菲
如果计算金额的话,你用decimal比较准确,这个是浮点数,在计算机的存储方式的形式只识别0,1,或者用Math.Round来忽略误差值
-
鸿蒙传说
精度不同,导致的。
-
holdtom
要想不损失,
用Java的BigInteger