次の状況を想像してください。金額はループ内の合計に追加されます。
float total = 0;
float[] amounts = new float[]{...};
foreach(float amount in amounts)
{
total += amount;
}
total
、およびすべてamount
の がデータベースに書き込まれます。SQL で計算するSUM(amount)
と、 とは異なる値になりますtotal
。さらに、C# で同じ計算を行うと、今回は double 型の値に金額を加算すると、
double total = 0;
//the rest of the code is the same as above
次にtotal
、正しい値を表します。
これは、float と double の精度の違いが原因でしょうか?
値によって異なりますのでご注意ください。この計算結果のほとんどは正しいです。