現在、Steve McConnellによるコード完成、特に浮動小数点数のページ295を読み込んでいます。印刷インクリメント0.1 in c#
iは、次のコードを実行する場合:
double nominal = 1.0;
double sum = 0.0;
for (int i = 0; i < 10; i++)
{
sum += 0.1;
Console.WriteLine("sum: " + sum.ToString());
}
if (equals(nominal,sum))
{
Console.WriteLine("Numbers are the same");
}
else
{
Console.WriteLine("Numbers are different");
}
をI印刷を得たアウトの 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 番号が異なる
どのように私はdidn '起こると思われる出力を得るか? 、すなわち:私はダブルから文字列への暗黙的な変換を行うと 0.1 0.2 0.30000000000000004 0.4 0.5 0.6 0.7 0.79999999999999999 0.89999999999999999 0.99999999999999999 数字は
異なるC#丸め番号ですか?私はアプリケーションをデバッグし、forループをステップ実行すると、終端ではない繰り返しの10進数を見ることができるので、そうだと思います。どう思いますか?私は間違っていますか?
ああありがとうございます。 私はあなたが与えた出力で非常に正確だったはずです。私が0.79999999999999999のような長い10進数を与えたとき、私は使用していた桁数に注意を払わなかった。 – burnt1ce