为什么有些数字存储为浮点数时会失去准确性?
例如,十进制数9.2
可以精确地表示为两个十进制整数的比率(92/10
),这两个十进制整数都可以精确地表示为二进制(0b1011100/0b1010
)。然而,存储为浮点数的相同比率永远不会完全等于9.2
:
32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
这样一个明显简单的数字如何“太大”而不能在内存的64位中表达?