Python 3浮点小数点/精度
我正在读取一个带有浮点数的文本文件,这些数字都带有1或2个小数点。我正在使用float()
将线转换为浮点数,并ValueError
在失败的情况下引发。我将所有花车存储在列表中。打印时,我想将其打印为2个小数位的浮点数。
假设我有一个文本文件,其编号为-3,65、9,17、1。我阅读了每个文件,然后将它们转换为float并将它们附加到列表中。现在在Python
2中,调用float(-3.65)
return -3.65
。但是在Python 3中,float(-3.65)
returns-3.6499999999999999`失去了它的精度。
我想打印浮点数列表,[-3.6499999999999999, 9.1699999999999999,
1.0]仅包含2个小数点。沿着进行操作'%.1f' % round(n,
1)会返回一个字符串。如何返回浮点数的所有两个小数点而不是字符串的列表?到目前为止,我使用对其进行了四舍五入,[round(num, 2) for
num in list]但需要设置小数点/精度而不是round()
。
回答:
一言以蔽之。
3.65
不能完全表示为float
。您得到的数字是最接近的数字3.65
,具有精确的float
表示形式。
(较旧?)Python 2和3之间的差异纯粹是由于默认格式。
我在Python 2.7.3和3.3.0中都看到以下内容:
In [1]: 3.65Out[1]: 3.65
In [2]: '%.20f' % 3.65
Out[2]: '3.64999999999999991118'
有关确切的十进制数据类型,请参见decimal.Decimal
。
以上是 Python 3浮点小数点/精度 的全部内容, 来源链接: utcz.com/qa/418621.html