gsk's place

my love

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一个Double值由2个Double相加,比如明明是91.2 + 2.4,结果应为93.6,为什么结果是93.6000000000001
为什么会无端地在小数点后面加很多个0,最后还是一个1 ?


计算机表示十进制数字都有误差的,这是很自然的事情。所以对于浮点数,你不能随便判断一个变量是否“等于93.6”,而应该用

Math.abs(x - 93.6)<double.Epsilon 

这样的表达式来判断x是否是93.6。

这确实是在你学习计算机原理时应该学到的。

Double.Epsilon 字段

表示大于零的最小正 Double 值。 此字段为常数。

posted on 2016-06-02 14:58  gsk99  阅读(607)  评论(0编辑  收藏  举报