【问题标题】:Accurate Reflection of Size of Sum of Large Numbers with Integer Arithmetic用整数算法准确反映大数和的大小
【发布时间】:2013-06-12 22:59:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: python numpy integer-overflow


    【解决方案1】:
    numpy.iinfo(numpy.int64).max
    

    给予

    9223372036854775807L
    

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

    numpy.finfo(numpy.float64).max
    

    给了

    1.7976931348623157e+308
    

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

    【讨论】:

    • 感谢您回答我原来的问题。
    • 由于我没有问清楚我想问的问题,所以我只是编辑了它。如果我有 15 个声望,我会投票。
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 2012-11-07
    • 2011-07-10
    • 2012-05-28
    • 2011-06-18
    • 2022-11-20
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多