python 整数溢出_得到numpy警告整数溢出

大多数使用python,我已经被宠坏了,不必担心整数溢出。现在我正在使用numpy,我不得不再次担心它。我想numpy在溢出的情况下出错,但它似乎不适用于int64。得到numpy警告整数溢出

import numpy

numpy.seterr(all='raise')

print("{:,}".format(numpy.prod([10]*50)))

# -5,376,172,055,173,529,600

print("{:,}".format(numpy.int64(3200000000) * numpy.int64(3200000000)))

# -8,206,744,073,709,551,616

print("{:,}".format(numpy.int32(320000) * numpy.int32(320000)))

# FloatingPointError: overflow encountered in int_scalars -- Finally getting an error!

我可以随时添加dtype=object来解决这些问题,但我认为Int64的不够好大部分时间,它是太可怕了,它可以在这个硬故障检测方法。

为什么seterr只能用于int32?我可以使它适用于int64吗?

的numpy.seterr文档,我可以找到这可能暗示,这可能是为什么的情况下的唯一部分是下列短文:

注意整数标量操作类型(如INT16)是 处理像浮点,并受这些设置的影响。

但data type文档中没有提示int32和int64在概念上有所不同。不确定int64是否被认为是“整数标量类型”。

2015-08-14

Dan

+3

看起来像一个numpy的bug;请参阅https://github.com/numpy/numpy/pull/3199。奇怪的是,打印(numpy.int64(2 ** 63-1)* numpy.int64(2))*会在我的系统上引发异常(Ubuntu 14.04,Python 2.7.6,numpy 1.8.2),但是您的示例显示了小车行为。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值