毎回、2 倍の itemCost (元は 0.80) を 0.20 ずつ減らす、この switch ステートメントがあります。0.00 に達したら、コードを実行したいと思います。0.00 になるまで問題なく動作しますが、itemCost は 0.00 ではなく 5.55111512312578E-17 になります。
switch ステートメントを実行するボタンを押したときの itemCost の出力値は次のとおりです。
0.60, 0.40, 0.20, 5.55111512312578E-17, -0.20, -0.40 etc
コード:
switch (codeString)
{
case "20":
{
userAmount = userAmount + 0.20;
itemCost = itemCost - 0.20;
Console.WriteLine("" + itemCost);
if (itemCost == 0.00)
{
giveChange();
labelInstructions.Text = "giveChange";
}
else
{
string tempString = string.Format("{0:N2}", itemCost);
labelInstructions.Text = "Please insert £" + tempString;
}
break;
}
}
この奇妙な動作が発生する理由と修正方法を知っている人はいますか?