出于好奇,我跑了以下:
>>> int(1e100)
而且,输出是:
10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104L
为什么呢?为什么这看起来不像:
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L
这是int
功能的产品,还是大型long
存储的产品?
答案 0 :(得分:8)
1e100
是一个浮点数,significand中的精度为53位。您尝试表示的整数需要333位才能准确,因此需要进行一些舍入。替换底部位以使最接近的基数2为您想要的结果。
请参阅:http://docs.python.org/tutorial/floatingpoint.html#representation-error
答案 1 :(得分:1)
它被转换为float,然后显示为整数。欢迎来到不精确的四舍五入的世界
答案 2 :(得分:0)
1e100是一个浮点数(通常,使用e
表示浮点数):
>>> type (1e100)
<type 'float'>