为什么double型的0.29*100让后结果是28.999999999999996

转化整型的时候会截断小数位变成28了,朋友开发一个java项目做折扣计算的时候出现这个问题了。结果发现.Net也是这样。不光是0.29 0.57的时候也会变成56.9999999X
BIG阳
浏览 1195回答 8
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
打开App,查看更多内容
随时随地看视频慕课网APP