1

下一个行为让我感到困惑,任何解释都将不胜感激。

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

使用 python 2.7

4

3 回答 3

7

唯一的区别是print. 数字没有改变,只是它的表示。您可以将问题减少到:

>>> 0.1457164443693023
0.1457164443693023
>>> print 0.1457164443693023
0.145716444369

(我猜(这只是一个猜测)这归结为__repr__vs__str__或沿着这条线的东西)

于 2013-08-04T06:42:23.143 回答
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 __() 返回较少的小数。

于 2013-08-04T06:49:01.573 回答
3

看起来 python 没有打印浮点数的全部准确性,但它仍然存在。

>>> a = (0.1457164443693023, False)

>>> print a
(0.1457164443693023, False)

>>> print repr(a[0])
0.1457164443693023
于 2013-08-04T06:44:22.357 回答