0

我有这个代码:

double timeTillTick = 15.0;
private void lower_Tick(object sender, EventArgs e)
{
    if (timeTillClear > 0)
    {
        timeTillClear -= 0.1;
        clearingIn10SecondsToolStripMenuItem.Text = "Clearing in " + timeTillClear + " seconds.";
    }
    else
    {
        lower.Enabled = false;
    }
}

每 100 毫秒降低一次滴答声。当它:

  • 达到 8
  • 达到 5
  • 达到 1

它增加了0.000000000000001。为什么?

4

1 回答 1

5

很像1/3不能用十进制表示法(0.333333 ...)精确0.1表示,不能完全表示浮点数,它在内部使用二进制表示法(又名IEEE-754)。这就是为什么你会得到那个固有的错误。

于 2013-11-06T05:09:56.063 回答