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.65

Out[1]: 3.65

In [2]: '%.20f' % 3.65

Out[2]: '3.64999999999999991118'

有关确切的十进制数据类型,请参见decimal.Decimal

以上是 Python 3浮点小数点/精度 的全部内容, 来源链接: utcz.com/qa/418621.html

回到顶部