3 回答
TA贡献1877条经验 获得超6个赞
蟒蛇3
在python中只有浮点数有硬限制。整数被实现为在python3任意大小的“长”整数对象和通常不会溢出。
您可以使用以下代码测试该行为
import sys
i = sys.maxsize
print(i)
# 9223372036854775807
print(i == i + 1)
# False
i += 1
print(i)
# 9223372036854775808
f = sys.float_info.max
print(f)
# 1.7976931348623157e+308
print(f == f + 1)
# True
f += 1
print(f)
# 1.7976931348623157e+308
您可能还想看看sys.float_info和sys.maxsize
蟒蛇2
在 python2 中,如果如数字类型文档中所述过大,整数会自动转换为长整数
import sys
i = sys.maxsize
print type(i)
# <type 'int'>
i += 1
print type(i)
# <type 'long'>
能result *= factor不能出于同样的原因?
为什么不试试呢?
import sys
i = 2
i *= sys.float_info.max
print i
# inf
Python 有一个特殊的无穷大浮点值(以及负无穷大),如浮点数文档中所述
TA贡献1993条经验 获得超5个赞
我在python3中遇到了整数溢出的问题,但是当我检查类型时,我明白了原因:
import numpy as np
a = np.array([3095693933], dtype=int)
s = np.sum(a)
print(s)
# 3095693933
s * s
# -8863423146896543127
print(type(s))
# numpy.int64
py_s = int(s)
py_s * py_s
# 9583320926813008489
一些sumPandas和 numpy 函数,例如在数组或系列上返回 np.int64,所以这可能是您在 Python3 中看到 int 溢出的原因。
添加回答
举报