用整数算法精确反映大数和的大小

时间:2013-06-12 22:59:32

标签: python numpy integer-overflow

再次感谢您的时间。我希望我没有太多你们这些人。 当总和溢出,但均值在范围内时,如何用整数运算快速准确地计算和的大小?

意味着没有溢出,但它不是整数算术。自然日志适用于数学,但编程速度很慢。

>>> k = numpy.empty((10), dtype=numpy.int64)
>>> k[:] = 9223372036854775807
>>> print k
[9223372036854775807 9223372036854775807 9223372036854775807
 9223372036854775807 9223372036854775807 9223372036854775807
 9223372036854775807 9223372036854775807 9223372036854775807
 9223372036854775807]
>>> numpy.sum(k)
-10
>>> numpy.mean(k)
9.2233720368547758e+18

1 个答案:

答案 0 :(得分:2)

numpy.iinfo(numpy.int64).max

给出

9223372036854775807L

因此,在求和时使用整数值时会出现溢出。但是,另一方面

numpy.finfo(numpy.float64).max

给出

1.7976931348623157e+308

因此,在计算均值时不会出现溢出,因为均值计算使用浮点值并且结果是正确的。如果您使用大于允许的最大值的值,它会溢出。

相关问题