为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2018-12-07 10:01:02
转化整型的时候会截断小数位变成28了,朋友开发一个java项目做折扣计算的时候出现这个问题了。结果发现.Net也是这样。不光是0.29 0.57的时候也会变成56.9999999X
查看完整描述

8 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

decimal a = 0.29m 这样的计算方式就是精确的。 dobule和float 比如1.0 在计算机中可能表现为0.9999999999999999999或者是 1.000000000000001 这2种形式
查看完整回答
反对 回复 2018-12-09
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

在金额使用的话:用decimal 比较。。小数点后几位   你可以按位截取的 普通的应用:应用Double Double也是可以截取的
查看完整回答
反对 回复 2018-12-09
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

如果计算金额的话,你用decimal比较准确,这个是浮点数,在计算机的存储方式的形式只识别0,1,或者用Math.Round来忽略误差值
查看完整回答
反对 回复 2018-12-09
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

精度不同,导致的。
查看完整回答
反对 回复 2018-12-09
?
holdtom

TA贡献1805条经验 获得超10个赞

要想不损失, 用Java的BigInteger
查看完整回答
反对 回复 2018-12-09
  • 8 回答
  • 0 关注
  • 1194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信