根据我的预期.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
这是什么原因?
答案 0 :(得分:9)
因为Python使用的IEEE-754浮点数不是很精确。标志性的例子是0.1 + 0.2 = 0.30000000000000004
。
这是Python文档中的well documented。
答案 1 :(得分:4)
您正在使用的值是浮点数,另请参阅:http://docs.python.org/2/tutorial/floatingpoint.html
答案 2 :(得分:4)
因为0.01
和0.05
不是他们所期待的:
>>> import decimal
>>> decimal.Decimal(0.01)
Decimal('0.01000000000000000020816681711721685132943093776702880859375')
>>> decimal.Decimal(0.05)
Decimal('0.05000000000000000277555756156289135105907917022705078125')