我对这个SO问题感到困惑,其中@MikeMüller建议四舍五入。
我的理解如下。 如果我们写小数位,它看起来像这样:
1000 100 10 1 . 1/10 1/100 1/1000
在二进制中,它看起来像这样:8 4 2 1 . 1/2 1/4 1/8
因此,我们可以在内存中精确地存储0.5、0.25或0.125,但不能精确地存储例如0.3。那么Python为什么会输出以下内容呢?
print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)
>>>0.1
>>>0.2
>>>0.3
>>>0.30000000000000004
我认为应该输出。
>>>0.1
>>>0.2
>>>0.30000000000000004
>>>0.30000000000000004
我哪里错了?
我的问题不是浮点数计算有问题吗?的重复, 因为该帖子的提问者并不明白为什么0.1+0.2不等于0.3。这不是我问题的主题!