当我从数组调用特定实体时遇到python舍入数字的问题

时间:2012-11-08 08:21:33

标签: python list rounding

我有一个数组:

a = [0.313767818199811, 0.169656461527218, 0.934219696497667]

当我这样做时

print a
[0.313767818199811, 0.169656461527218, 0.934219696497667]

print a[0]
0.3137678182

我需要保留数组中每个数字的所有数字。我需要a[0]等于0.313767818199811

告诉python保留数字的最好方法是什么?

4 个答案:

答案 0 :(得分:4)

a[0]确实等于完全扩展。 print语句将其截断(使用str)用于显示目的。

以下代码可能会使此更清晰。特别是,它解释了在a的元素上打印a[0]str(a) - repr来电str(不是a)之间的差异:

>>> str(a)
'[0.313767818199811, 0.169656461527218, 0.934219696497667]'
>>> str(a[0])
'0.3137678182'

>>> repr(a)
'[0.313767818199811, 0.169656461527218, 0.934219696497667]'
>>> repr(a[0])
'0.313767818199811'

如上面的代码所示,您可以使用以下完整精度显示a[0]

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

答案 1 :(得分:3)

您可以使用:

print '%.15f' % a[0]
>> 0.313767818199811

小数点后会显示15位数。

答案 2 :(得分:0)

您可能需要repr()print使用str(),因此您的输出会被截断:

In [13]: repr(a[0])
Out[13]: '0.313767818199811'

In [14]: repr(a[1])
Out[14]: '0.169656461527218'

答案 3 :(得分:0)

使用格式:print '%.17f' % a[0]表示17位数字。如果你再次遇到麻烦,请谷歌'python float print precision'