Tag: addition

C#双加 – 奇怪的行为

public static void Main() { Dictionary values = new Dictionary(); values.Add(“a”, 0.002); values.Add(“b”, 0.003); values.Add(“c”, 0.012); // Summing iteratively. double v1 = 615.0; foreach (KeyValuePair 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方法所做的一些舍入。) 有谁知道这里发生了什么?