Python浮点数会丢失元组的准确性吗?

时间:2013-08-04 06:34:34

标签: python floating-accuracy

下一个行为让我感到困惑,任何解释都会受到赞赏。

>>> a = (0.1457164443693023, False)
>>> print a
(0.1457164443693023, False)
>>> print a[0]
0.145716444369

使用python 2.7

3 个答案:

答案 0 :(得分:7)

唯一的区别是print。数字不会改变,只是它的代表性。您可以将问题减少到:

>>> 0.1457164443693023
0.1457164443693023
>>> print 0.1457164443693023
0.145716444369

(我猜(这只是一个猜测)这可归结为__repr__ vs __str__或此行的某些内容)

答案 1 :(得分:6)

第一次调用__ repr __,第二次调用__ str __

a = (0.1457164443693023, False)
print a
>>> (0.1457164443693023, False)
print a[0]
>>> 0.145716444369

print repr(a[0])
>>> 0.1457164443693023
print str(a[0])
>>> 0.145716444369

出于某些设计原因Double .__ str __()返回更少的小数。

答案 2 :(得分:3)

看起来python不会打印浮点数的完整精度,但它仍然存在。

>>> a = (0.1457164443693023, False)

>>> print a
(0.1457164443693023, False)

>>> print repr(a[0])
0.1457164443693023