Python中强制转换为'int'导致生成错误结果

2024-04-29 03:01:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在Python3.3中执行以下类型转换操作

int( 10**23 / 10 )

Output: 10000000000000000000000

在增加一倍或更多的能量之后

int( 10**24 / 10 )

Output: 99999999999999991611392

int( 10**25 / 10 )

Output: 999999999999999983222784

为什么会这样?虽然简单的排字

int( 10**24 )

Output: 1000000000000000000000000

不会影响值。在


Tags: outputint能量排字
2条回答

在Python3.x中,/总是执行真(浮点)除法。使用floor division//可以得到预期的结果。在

>>> int(10**25 // 10)
1000000000000000000000000

这种行为的原因是float不能精确地存储大整数。在

假设使用IEEE-754双精度,它最多可以精确存储253整数,大约为1016。另一个例子:

^{pr2}$

您正在使用/运算符执行浮点除法。10**24/10恰好有一个不精确的整数表示。在

如果需要整数结果,请用//除。在

>>> type(10**24/10)
<class 'float'>
>>> type(10**24//10)
<class 'int'>

相关问题 更多 >