gpt4 book ai didi

python - numpy 中连续整数的总和不正确

转载 作者:太空狗 更新时间:2023-10-30 02:07:53 26 4
gpt4 key购买 nike

使用以下方法对前 100,000,000 个正整数求和:

import numpy as np
np.arange(1,100000001).sum()

我返回:987459712,与公式不匹配:N(N+1)/2 for N=100000000。即,公式返回 5000000050000000

在发布之前,我写了以下内容,它返回 True:

np.arange(1,65536).sum() == ((65535+1) * 65535)/2

但是,数字 65536 似乎是一个临界点,因为

np.arange(1,65537).sum() == ((65536+1) * 65536)/2

返回 False

对于大于 65536 的整数,代码返回 False,而低于此阈值的整数返回 True

谁能解释一下我在计算总和时做错了什么,或者代码出了什么问题?

最佳答案

似乎 numpy 有时很难猜测正确的数据类型。

在我的系统上,Win 10 64 位,Python 3.4.4,numpy 1.13.1:

>>  np.arange(1, 100000001).sum()
987459712
>> np.arange(1, 100000001).dtype
dtype('int32')

但是,如果我们“帮助”numpy,它会得到正确的结果:

>> np.arange(1, 100000001, dtype=np.int64).sum()
500000005000000

错误的结果显然是32位整数溢出造成的。

关于python - numpy 中连续整数的总和不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com