2

感谢你的宝贵时间。我希望我没有打扰你们太多。当总和溢出,但均值在范围内时,如何通过整数运算快速准确了解总和的大小?

平均值不会溢出,但它不是整数算术。自然对数适用于数学,但编程速度很慢。

>>> 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
4

1 回答 1

2
numpy.iinfo(numpy.int64).max

9223372036854775807L

因此,当整数值用作求和时,您会得到溢出。但另一方面

numpy.finfo(numpy.float64).max

1.7976931348623157e+308

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

于 2013-06-12T23:03:23.527 回答