我有这段代码:
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毫秒降低一次滴答。当它:
它增加0.000000000000001
。为什么呢?
答案 0 :(得分:5)
很像1/3
使用十进制表示法(0.333333 ...)无法用完全表示,0.1
无法将完全表示为浮点数数字,内部使用二进制表示法(aka IEEE-754)。这就是你得到这个固有错误的原因。