是否保证除以 10 的幂在浮点运算标准中给出准确的结果)?

Is it guaranteed that division by power of 10 gives accurate result in Floating-point arithmetic standard)?

我发现 9 * 0.0001 = 0.0009000000000000001,但是 9 / 10_000 = 0.0009

是否保证当您除以 10 的幂时您将得到准确的值(根据 IEEE 754-2019:IEEE 浮点运算标准)

我期待知道浮点标准的具体行为的人来解释是否有这样的保证。

0.009 无法用 IEEE 754 浮点数精确表示。 0.009 的二进制表示为:

0.0000001001001101110100101111000110101001111110111110011101101100100010110100001110010101100000010000011
     0001001001101110100101111000110101001111110111110011101101100100010110100001110010101100000010000011
     ...

小数点后有无穷多个(二进制)数字的有理数

所以这不能用浮点数表示,浮点数在尾数部分只有有限数量的二进制数字可用。

0.009在浮点数中表示如下:

sign exponent    mantissa
0    01111000    00100110111010010111100

但是由于这里的二进制序列是有限的,所以实际上代表的是这个数:

0.0089999996125698089599609375....

9/10n

中其他10的正幂也会出现类似的偏差

您可以使用 this tool 进行转换。