下一个行为让我感到困惑,任何解释都将不胜感激。
>>> a = (0.1457164443693023, False)
>>> print a
(0.1457164443693023, False)
>>> print a[0]
0.145716444369
使用 python 2.7
下一个行为让我感到困惑,任何解释都将不胜感激。
>>> a = (0.1457164443693023, False)
>>> print a
(0.1457164443693023, False)
>>> print a[0]
0.145716444369
使用 python 2.7
唯一的区别是print
. 数字没有改变,只是它的表示。您可以将问题减少到:
>>> 0.1457164443693023
0.1457164443693023
>>> print 0.1457164443693023
0.145716444369
(我猜(这只是一个猜测)这归结为__repr__
vs__str__
或沿着这条线的东西)
第一个调用 __ 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 __() 返回较少的小数。
看起来 python 没有打印浮点数的全部准确性,但它仍然存在。
>>> a = (0.1457164443693023, False)
>>> print a
(0.1457164443693023, False)
>>> print repr(a[0])
0.1457164443693023