关于math.fsum之问

200 阅读1分钟

今天被math的一个很重要的函数难住了,希望能得到大佬的解答。

import math
print(math.fsum([0.1, 0.2, 0.3]))
print(math.fsum([0.1, 0.2, 0.4]))

输出是

0.6
0.7000000000000001

不太懂,fsum函数应当得到精确的浮点数,比如0.6,为什么下面就不是了呢?
我还试了其他组合,把0.4换成0.5、0.6等等,能得到精确浮点数,但换成1.x后也会出现这样的问题,比如换成1.1,0.1+0.2+1.1的结果是1.400000000000001。
这是为什么呢?Empty Head里面有着Big Big Question……