【发布时间】:2017-10-21 07:01:25
【问题描述】:
我在 PyCharm 中尝试了一些东西,所以我写了一段简单的代码,包括:
xlist = np.arange(99995,99996)
print(xlist*xlist)
>>> array([1409065433])
如您所见,答案不正确!我应该得到 9999000025。我偶然发现了这个,因为我最初是这样写的:
xlist = np.arange(0,100000)
for x in xlist:
print(x)
z = x * x
print(z)
print(xlist*xlist)
得到了许多奇怪的结果,包括 x 大约 90000 的负值。
我的三个朋友测试了这段代码,其中两个得到了与我相同的结果(在 Windows 上),另一个在 Linux 上得到了正确的结果,所以它似乎与操作系统有关......
有人知道这是怎么回事吗?
【问题讨论】:
-
Python3 整数是任意精度的。 Numpy int 默认为 32 位或 64 位,因此它们不能任意大并且可能发生溢出。
-
在此之前指定:
dtype=np.int64。 -
@AndrasDeak:不一定是 64 位的。这取决于平台。