为什么.05 + .01 == .06在python 2.7.3中返回False?

Nul*_*ify -1 python python-2.7

按照我的预期.05 + .01应该等于.06但是在python中它不会发生.因为.05+.01 = 0.060000000000000005而且不等于.06.

>>> .01+.01
0.02
>>> .02+.01
0.03
>>> .03+.01
0.04
>>> .04+.01
0.05
>>> .05+.01
0.060000000000000005  #expected .06
>>> .06+.01
0.06999999999999999  #expected .07
>>> .07+.01
0.08
>>> .08+.01
0.09
>>> .09+.01
0.09999999999999999 #expected .10
>>> 0.09999999999999999+.01
0.10999999999999999  #expected .11
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

T.J*_*der 9

因为Python使用的IEEE-754浮点数不是很精确.标志性的例子是0.1 + 0.2 = 0.30000000000000004.

这在Python文档中有详细记载.