一个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 值。 此字段为常数。