出于好奇,我运行了以下内容:
>>> int(1e100)
而且,输出是:
10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104L
为什么?为什么这看起来不像:
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
这是int函数的产品,还是大型存储的产品?
解决方法
1e100是一个浮点数,在
significand中具有53位精度.您尝试表示的整数需要333位才能准确,因此需要进行一些舍入.替换底部位以使最接近的基数2为您想要的结果.
见:http://docs.python.org/tutorial/floatingpoint.html#representation-error