Python 如何将大浮点值转换为int?

Python 如何将大浮点值转换为int?,python,python-2.7,Python,Python 2.7,我有一个包含大浮点数的变量,比如说a=999999999999 当我在解释器中键入int(a)时,它返回10000000000000。 对于这样的长数字,如何将其输出为999999999999?99999999999999是一个无法以浮点格式精确表示的数字,因此Python会妥协并选择可以表示的最接近的值。在这种情况下,正好是10000000000000。这就是为什么将其转换为整数会得到10000000000000 如果您需要比浮点更高的精度,请考虑使用.< /P> 问题不是int,而是浮点值本

我有一个包含大浮点数的变量,比如说
a=999999999999

当我在解释器中键入
int(a)
时,它返回
10000000000000

对于这样的长数字,如何将其输出为
999999999999

99999999999999
是一个无法以浮点格式精确表示的数字,因此Python会妥协并选择可以表示的最接近的值。在这种情况下,正好是10000000000000。这就是为什么将其转换为整数会得到10000000000000

如果您需要比浮点更高的精度,请考虑使用.< /P>


问题不是
int
,而是浮点值本身。您的值需要17位精度才能正确表示,而双精度浮点值的精度在15到16位之间。因此,当您输入它时,它被四舍五入到最接近的可表示浮点值,即
10000000000000.0
。当调用
int
时,它无法执行任何操作-精度已经丢失


如果需要精确表示此类值,可以使用
decimal
数据类型,请记住,与常规浮点相比,性能确实会受到影响

999999999999.99为100000000000000.0
变量
a
已使用问题中提到的值定义。代码已包含一行
a=99999999999
。在代码中,您正在
decimal.decimal()
内声明
a
的值。所以基本上,我需要从
a
中获取值,然后将其打印出来。我传递给
decimal的值。decimal
与问题中分配给
a
的值不同。我的值是字符串文字。这对于保持精度是必要的。如果执行
a=decimal.decimal(99999999999999.99)
,则
a
将改为
decimal('10000000000000')
。如何将其转换为字符串,然后使用
decimal.decimal(string)
a
已声明为浮点类型。如果
a
已经是浮点类型,则您将永久失去精度,无法恢复精度。
>>> import decimal
>>> a = decimal.Decimal("999999999999999.99")
>>> a
Decimal('999999999999999.99')
>>> int(a)
999999999999999