加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python sum()返回负值,因为总和对于32位整数来说太大了

发布时间:2020-12-20 12:40:27 所属栏目:Python 来源:网络整理
导读:x = [1,2,3,... ]y = sum(x) x的总和是2165496761,它大于32位整数的限制 所以sum(x)返回-2129470535. 如何通过将其转换为长整数来获得正确的值? 这是我的导入列表: import math,csv,sys,re,time,datetime,pickle,os,gzipfrom numpy import * 解决方法 你得
x = [1,2,3,... ]
y = sum(x)

x的总和是2165496761,它大于32位整数的限制
所以sum(x)返回-2129470535.

如何通过将其转换为长整数来获得正确的值?

这是我的导入列表:

import math,csv,sys,re,time,datetime,pickle,os,gzip
from numpy import *

解决方法

你得到这个无效值的原因是你在int32上使用np.sum.没有什么可以阻止您不使用np.int32而是使用np.int64或np.int128 dtype来表示您的数据.例如,您可以使用

x.view(np.int64).sum()

另外,请确保您从不使用numpy import *.这是一种可怕的习惯和习惯,你必须尽快摆脱它.当您使用from … import *时,您可能会覆盖一些Python内置函数,这使得调试非常困难.典型的例子,你覆盖sum或max这样的函数……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读