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メソッドは正確な結果を返しますが、反復して加算するのではありません。 (私は2つの値を印刷するときは同じですが、これはWriteLineメソッドの四捨五入によるものと推測しています)。C#ダブル加え - 奇妙な行動
何が起こっているのですか?
。 –
浮動小数点は整数ではありませんか?私はあなたがそこに良い答えを見つけるだろうと思うので、このトピックを見て:http://stackoverflow.com/q/803225/1243316。 –
@TheBossは同じ効果を参照してください。double d1 = 615.0 +(0.002 + 0.003 + 0.012); double d2 = 615.0 + 0.002 + 0.003 + 0.012; ' –