1

我有一个数组:

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

4 回答 4

4

a[0]确实等于完全扩展。为了显示目的, print 语句正在截断它(使用str)。

下面的代码可能会使这一点更清楚。特别是,它解释了打印a和调用a[0](非)元素之间的差异:str(a)reprstra

>>> 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
于 2012-11-08T08:24:45.893 回答
3

您可以使用:

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

它将在小数点后显示 15 位。

于 2012-11-08T08:26:09.477 回答
0

你可能需要repr()在这里,print使用str()所以你的输出被截断:

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

In [14]: repr(a[1])
Out[14]: '0.169656461527218'
于 2012-11-08T08:25:59.730 回答
0

使用格式:print '%.17f' % a[0]17 位数字。如果您再次遇到此问题,请使用 google 'python float print precision'

于 2012-11-08T08:26:42.277 回答