当前位置: 首页 > 面试题库 >

Python 3浮点小数点/精度

柯宜年
2023-03-14
问题内容

我正在读取一个带有浮点数的文本文件,这些数字都带有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



 类似资料:
  • 我编写了一个程序来演示Go中的浮点错误: 它打印: 这与用C编写的相同程序的行为相匹配(使用双代码类型) 但是,如果改用,程序就会陷入无限循环!如果将C程序修改为使用而不是,它将打印 为什么在使用时,Go程序的输出与C程序的输出不一样?

  • 问题内容: $a = ‘35’; $b = ‘-34.99’; echo ($a + $b); 结果为0.009999999999998 这是怎么回事?我想知道为什么我的程序不断报告奇怪的结果。 为什么PHP不返回预期的0.01? 问题答案: 因为浮点运算!=实数运算。对于一些浮子和,由不精确性引起的差异的说明是。这适用于使用浮点数的任何语言。 由于浮点数是具有有限精度的二进制数,因此存在有限数量

  • 本文向大家介绍Fortran 浮点数精度,包括了Fortran 浮点数精度的使用技巧和注意事项,需要的朋友参考一下 示例 类型的浮点数real不能有任何实数值。它们可以表示实数,最多可以包含一定数量的十进制数字。 FORTRAN 77保证了两种浮点类型,而最新的标准则至少保证了两种实数类型。实变量可以声明为 x这是默认类型的实数,并且y是比更大的十进制精度的实数x。在Fortran 2008中,十

  • 在我的计算机科学课程中,我们正在研究浮点数以及它们在内存中是如何表示的。我已经理解了它们在内存中是如何表示的(尾数/有效数、指数及其偏差、符号位),我也理解了浮点是如何相互添加和减去的(反规格化和所有那些有趣的东西)。然而,在翻阅一些学习问题时,我注意到一些我无法解释的东西。 当一个不能精确表示的浮点数加到自己身上几次时,答案比我们在数学上预期的要低,但当同一个浮点数乘以一个整数时,答案就精确地得

  • 问题内容: 如果我有以下小数点数字: 然后我得到以下输出: 我想要的是: 问题答案: 可能令人困惑的部分是 的表示整个数(包括小数)的长度,而不仅仅是小数之前的部分。该代表的小数位数。 因此,要使格式正确无误,最多可以有小数点前4个数字和小数点后3个位,实际上是所需的格式。