关于exponents和int的Python问题

时间:2011-08-10 20:21:02

标签: python floating-point

出于好奇,我跑了以下:

>>> int(1e100)

而且,输出是:

10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104L

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

10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L

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

3 个答案:

答案 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'>