关于exponents和int的Python问题

oro*_*aki 6 python floating-point

出于好奇,我运行了以下内容:

>>> int(1e100)
Run Code Online (Sandbox Code Playgroud)

而且,输出是:

10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104L
Run Code Online (Sandbox Code Playgroud)

为什么?为什么这看起来不像:

10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
Run Code Online (Sandbox Code Playgroud)

这是int功能的产品,还是大型存储的产品long

Mar*_*som 8

1e100是一个浮点数,随着精度53位有效数字.您尝试表示的整数需要333位才能准确,因此需要进行一些舍入.替换底部位以使最接近的基数2为您想要的结果.

请参阅:http://docs.python.org/tutorial/floatingpoint.html#representation-error