2 つの double を追加しているときに、いくつかの奇妙な動作に気付きました。正しく動作する場合とそうでない場合があります。
最初の例を次に示します。
double num1 = 0.1 + 0.7; //Guess the result?
簡単 - 0.8 !!! か否か?
奇妙な結果を見てください:
if ステートメントは else ブロック内にあり、num1
- を出力しますが、いいえ、0.799999999999993 を出力せず、0.8 を出力します。
だから私はもう一歩進んで、このコードを試しました:
if (0.1 + 0.7 == 0.8) //Returns false ??
{
Console.WriteLine("Correct");
}
OK、奇妙ですが、正しい方法を見つけました。 f (float) を使用する必要があります。double には多くのスペースが含まれていることを覚えているので、より大きな数値を含めることができます。これが原因かもしれません。
float num2 = 0.1f + 0.7f;
if (num2 == 0.8f) //Perfect - finally works !!!
{
Console.WriteLine("Correct");
}
else
{
Console.WriteLine(num2);
}
しかし今、私はこれを試してみました - そして再び false を返します、なぜですか?
if (0.1f + 0.7f == 0.8f) //Returns false :(
{
Console.WriteLine("Correct");
}
デバッグ時のウォッチの結果は次のとおりです。
誰かがここで何が悪いのか説明できますか? それらはバグですか?
前もって感謝します。