Python3:将大整型转换为浮点数 - 错误的结果 - 如何正确?

Joh*_*nes 5 int type-conversion python-3.x

我需要对 python3 (版本 3.6.7)中的一个非常大的 int 进行一些除法。由于除法后总是得到错误的结果(用小数检查),我发现这是 int 和 float 之间的转换。

为什么要int(float(number))返回与最初给出的不同的数字?

数量例如

11112156454654632123512435326901347901387409791345202341234653563776467245234565435637654768245987098709846554513216562452354654823453456581
Run Code Online (Sandbox Code Playgroud)

int(float(number)我得到之后

11112156454654632053401792328854929027579441319469717890945725999319869381390969666824878190611577646608244392592697365262211066608985571328
Run Code Online (Sandbox Code Playgroud)

谢谢,

此刻确实陷入了困境。

约翰内斯

Nic*_*ick 0

这是二进制浮点运算的典型。Python 文档就在这里。

您应该看看您的案例中的Decimal模块。

from decimal import *
int(Decimal('11112156454654632123512435326901347901387409791345202341234653563776467245234565435637654768245987098709846554513216562452354654823453456581'))
Run Code Online (Sandbox Code Playgroud)