我编写了如下的python脚本,以测试模1的使用以提取浮点数x的小数部分:
while( condition ):
x *= 2
print(x)
decimal = x%1
print(decimal)
这是示例输出:
x:1.44
x%1:0.43999999999999995
x:2.88
x%1:0.8799999999999999
....
....
有人可以解释应用模1后精度下降的原因吗?浮点数的53位精度足以表示0.44。哪种操作(我采用的是IEEE 754表示法)导致精度降低到0.43999999999999995?
我正在使用python 3.6
很明显,此类错误可以在浮点数学中找到。但是我想知道这里是否有人知道什么操作触发了这种精度损失。即最初的IEEE 754表示怎么了?为什么?