【发布时间】:2025-12-11 10:25:01
【问题描述】:
在 C# 中我有以下代码:
public static float sum(List<float> array)
{
float result = 0.0f;
for (int i = 0; i < array.Length; i++)
result += array[i];
float lSum = array.Sum();
return result;
}
为什么这两种“不同”方法的结果不同?
对于长度为 911380 元素的数组 result=620246 和 lSum=620235.8 em>
什么是 List.Sum 的内部实现,哪个答案是正确的?是 C# 语言/库的问题还是取决于 Windows 中 + 的实现?
我们对人类大脑和心脏活动进行研究,我们需要正确的结果,所以我感谢任何形式的帮助!提前非常感谢。
【问题讨论】:
-
FWIW 每个元素的误差为 1.1x10^-5。不确定您是否会获得更好的精度,因为
float只能精确到 6 或 7 位数字。使用double可能会获得更好的结果。没有回答为什么两个答案不同的问题。 -
您的实际代码是使用数组还是列表?我想知道因为
.Length适用于数组,而对于 List 它应该是.Count -
感谢@Ciara 注意到这一点。写应该有
.Count。我的原始代码是:sum(List<float> array, int from, int to) ... for (int i = from; i < to; i++)我进行了就地修改,我犯了错误;)
标签: c# windows sum shared-libraries