从数组中调用特定实体时,python舍入数有问题
我有一个数组:从数组中调用特定实体时,python舍入数有问题,python,list,rounding,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.3137678199811 告诉python保留数字的最佳方法是什么?code>a[0]等于完全扩
a = [0.313767818199811, 0.169656461527218, 0.934219696497667]
当我这样做的时候
print a
[0.313767818199811, 0.169656461527218, 0.934219696497667]
print a[0]
0.3137678182
我需要保留数组中每个数字的所有数字。我需要a[0]
等于0.3137678199811
告诉python保留数字的最佳方法是什么?code>a[0]等于完全扩展。出于显示目的,print语句正在截断它(使用
str
)
下面的代码可能会更清楚地说明这一点。特别是,它解释了在a
的元素上打印a
和a[0]
-str(a)
调用repr
(非str
)之间的差异:
>>> 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
a[0]
不等于完全展开。出于显示目的,print语句正在截断它(使用str
)
下面的代码可能会更清楚地说明这一点。特别是,它解释了在a
的元素上打印a
和a[0]
-str(a)
调用repr
(非str
)之间的差异:
>>> 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
您可能需要repr()
在这里,print
使用str()
因此您的输出被截断:
In [13]: repr(a[0])
Out[13]: '0.313767818199811'
In [14]: repr(a[1])
Out[14]: '0.169656461527218'
您可能需要repr()
在这里,print
使用str()
因此您的输出被截断:
In [13]: repr(a[0])
Out[13]: '0.313767818199811'
In [14]: repr(a[1])
Out[14]: '0.169656461527218'
您可以使用:
print '%.15f' % a[0]
>> 0.313767818199811
它将在小数点后显示15位。您可以使用:
print '%.15f' % a[0]
>> 0.313767818199811
它将在小数点后显示15位。使用格式:
打印“%.17f”%a[0]
17位。如果您再次遇到此问题,谷歌“python浮点打印精度”将使用格式:打印“%.17f”%a[0]
17位。如果您再次遇到此问题,请使用谷歌“python浮点打印精度”我无法复制您的问题。请投票支持糟糕的研究。@jvallver:尝试运行以下代码:a=[0.3137678199811,0.169656461527218,0.934219696497667]打印a[0]repr
返回返回原始float
的最短字符串,该字符串可以是1到17位,例如0.100000000000002
需要17位。我无法复制您的issueDeserves否决票,因为研究不好。@jvallver:尝试运行此代码:a=[0.3137678199811,0.1696561527218,0.934219696497667]打印打印[0]repr
返回返回原始浮点值的最短字符串,可以是1到17位,例如,0.100000000000002
需要17位数字。你知道如何让print语句不这样做吗?@user1808562:我刚刚用一种显示完整展开的方式修改了我的答案。@user1808562 just doprint repr(a[0])
看到关于如何让print语句不这样做的想法了吗?@user1808562:我刚刚用一种显示完整展开的方式修改了我的答案。@user1808562只需执行print repr(a[0])
看到