我们知道浮点数存在问题,因为十进制数字并不能在二进制中完全准确地表示。它们被四舍五入成一个可以在二进制中表示的数字;有时这个数字会更高,有时则更低。在这种情况下,使用普遍的IEEE 754双精度格式,0.1和0.4都会向上舍入。
这个问题浮点数运算是否存在问题?已经在上面提到了,但这个问题不同。它要求在考虑那个问题的答案的基础上进一步详细地解释一个非直观的结果。
0.1 = 0.1000000000000000055511151231257827021181583404541015625
0.4 = 0.40000000000000002220446049250313080847263336181640625
由于这两个数字都很高,你期望它们的总和也很高。完美的加法应该给出0.5000000000000000277555756156289135105907917022705078125
,但实际上你得到了一个精确的0.5
。为什么呢?
这个问题浮点数运算是否存在问题?已经在上面提到了,但这个问题不同。它要求在考虑那个问题的答案的基础上进一步详细地解释一个非直观的结果。