gpt4 book ai didi

c# - Enumerable.Average 和 OverflowException

转载 作者:可可西里 更新时间:2023-11-01 08:42:41 29 4
gpt4 key购买 nike

也许是一个无用的问题:

public static double Average<TSource>(
this IEnumerable<TSource> source,
Func<TSource, int> selector
)

上述方法抛出的异常之一也是OverflowException: 序列中元素的总和大于Int64.MaxValue。

我假设此异常的原因是平均值的总和是使用 long 类型的变量 S 计算的?但是既然返回值是 double 类型,为什么设计者不选择让 S 也是 double 类型呢?

谢谢

最佳答案

因为这个特定的重载知道您开始使用 int 值,所以它知道您没有使用十进制值。将您的每个值转换为 double 然后将 double 值加在一起可能效率较低,并且肯定会让您面临浮点不精确问题的可能性,如果你有足够多的值集合。

更新

我刚刚做了一个快速基准测试,它需要 大约 50% 的时间 超过两倍的时间 来平均 double平均 ints。

关于c# - Enumerable.Average 和 OverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721603/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com