下一个行为让我感到困惑,任何解释都会受到赞赏。
>>> a = (0.1457164443693023, False)
>>> print a
(0.1457164443693023, False)
>>> print a[0]
0.145716444369
使用python 2.7
答案 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