public static void Main()
{
Dictionary<string, double> values = new Dictionary<string, double>();
values.Add("a", 0.002);
values.Add("b", 0.003);
values.Add("c", 0.012);
// Summing iteratively.
double v1 = 615.0;
foreach (KeyValuePair<string, double> kp in values)
{
v1 += kp.Value;
}
Console.WriteLine(v1);
// Summing using the Sum method.
double v2 = 615.0;
v2 += values.Values.Sum();
Console.WriteLine(v2);
Console.ReadLine();
}
当我在调试器中查看 v1 的值时,它给出的值为 615.01699999999994,但对于 v2,它给出的值为 615.017。由于某种原因,Sum 方法会产生准确的结果,而对它们进行迭代求和则不会。(当我打印这两个值时,它们是相同的,但我认为这是由于 WriteLine 方法所做的一些舍入。)
有人知道这里发生了什么吗?