当前位置: 代码迷 >> Java相关 >> double类型的10.03为啥乘100后会变成1002.9999999999999?
  详细解决方案

double类型的10.03为啥乘100后会变成1002.9999999999999?

热度:70   发布时间:2016-04-22 21:23:02.0
double类型的10.03为何乘100后会变成1002.9999999999999???
正在看《java语言程序设计基础篇》,在2.14 问题:整钱兑零中提到这个问题,double类型的10.03为何乘100后会变成1002.9999999999999,但书中没有介绍问题的原因。请问各位高人如何解决这个问题,是怎么回事?
------解决方案--------------------
浮点数在计算机中存储是近似存储的,所以计算下来就有误差了。楼主看看double数据在计算机中的存储吧。
------解决方案--------------------
BigDecimal

------解决方案--------------------
浮点计算存在误差的,因此结果不能直接==号比较,要考虑精度的去比较。
比如误差在0.0001内,那么结果result与预期值wantValue比较,
------解决方案--------------------
result-wantValue
------解决方案--------------------
<=0.0001,则算结果正确。
  相关解决方案