我有一个简单的代码,下面可以增加/减少一个名为COIN_VALUE的属性。当按下向上箭头时,它应该走:0.01、0.02、0.05、0.10、0.15等。如果按下DOWN,则应该为0.15,0.10,0.05,0.02,0.01。
我已在下面附上控制台结果。从0.05下降到0.02。我花了3天的时间来调整和更改代码,结果始终是相同的。有什么我想念的吗?
public double COIN_VALUE
{
get
{
return coinValue;
}
set
{
Debug.WriteLine("*** COIN VALUE CHANGED " + ((value > 0) ? "UP" : "DOWN") + ". CURRENT COINVALUE = " + coinValue+" ***");
if (value < 0)
{
Debug.WriteLine("CHANGE DOWN 1");
if (coinValue <= 0.01)
{
Debug.WriteLine("CHANGE DOWN 2");
coinValue = 0.01;
}
else if (coinValue <= 0.02)
{
Debug.WriteLine("CHANGE DOWN 3");
coinValue = 0.01;
}
else if (coinValue <= 0.05)
{
Debug.WriteLine("CHANGE DOWN 4");
coinValue = 0.02;
}
else
{
Debug.WriteLine("CHANGE DOWN 5");
coinValue -= 0.05;
if (coinValue <= 0)
{
coinValue = 0.01;
}
}
}
else if (value > 0)
{
Debug.WriteLine("CHANGE UP 1");
if (coinValue == 0.01)
{
Debug.WriteLine("CHANGE UP 2");
coinValue = 0.02;
}
else if (coinValue == 0.02)
{
Debug.WriteLine("CHANGE UP 3");
coinValue = 0.05;
}
else
{
Debug.WriteLine("CHANGE UP 4");
coinValue += 0.05;
}
}
Debug.WriteLine("COIN VALUE CHANGED " + ((value > 0) ? "UP" : "DOWN") + ". CURRENT COINVALUE AFTER CHANGE = " + coinValue);
}
}
和控制台结果:
[0:] *** COIN VALUE CHANGED UP. CURRENT COINVALUE = 0.01 ***
[0:] CHANGE UP 1
[0:] CHANGE UP 2
[0:] COIN VALUE CHANGED UP. CURRENT COINVALUE AFTER CHANGE = 0.02
[0:] *** COIN VALUE CHANGED UP. CURRENT COINVALUE = 0.02 ***
[0:] CHANGE UP 1
[0:] CHANGE UP 3
[0:] COIN VALUE CHANGED UP. CURRENT COINVALUE AFTER CHANGE = 0.05
[0:] *** COIN VALUE CHANGED UP. CURRENT COINVALUE = 0.05 ***
[0:] CHANGE UP 1
[0:] CHANGE UP 4
[0:] COIN VALUE CHANGED UP. CURRENT COINVALUE AFTER CHANGE = 0.1
[0:] *** COIN VALUE CHANGED UP. CURRENT COINVALUE = 0.1 ***
[0:] CHANGE UP 1
[0:] CHANGE UP 4
[0:] COIN VALUE CHANGED UP. CURRENT COINVALUE AFTER CHANGE = 0.15
[0:] *** COIN VALUE CHANGED UP. CURRENT COINVALUE = 0.15 ***
[0:] CHANGE UP 1
[0:] CHANGE UP 4
[0:] COIN VALUE CHANGED UP. CURRENT COINVALUE AFTER CHANGE = 0.2
[0:] *** COIN VALUE CHANGED UP. CURRENT COINVALUE = 0.2 ***
[0:] CHANGE UP 1
[0:] CHANGE UP 4
[0:] COIN VALUE CHANGED UP. CURRENT COINVALUE AFTER CHANGE = 0.25
[0:] *** COIN VALUE CHANGED DOWN. CURRENT COINVALUE = 0.25 ***
[0:] CHANGE DOWN 1
[0:] CHANGE DOWN 5
[0:] COIN VALUE CHANGED DOWN. CURRENT COINVALUE AFTER CHANGE = 0.2
[0:] *** COIN VALUE CHANGED DOWN. CURRENT COINVALUE = 0.2 ***
[0:] CHANGE DOWN 1
[0:] CHANGE DOWN 5
[0:] COIN VALUE CHANGED DOWN. CURRENT COINVALUE AFTER CHANGE = 0.15
[0:] *** COIN VALUE CHANGED DOWN. CURRENT COINVALUE = 0.15 ***
[0:] CHANGE DOWN 1
[0:] CHANGE DOWN 5
[0:] COIN VALUE CHANGED DOWN. CURRENT COINVALUE AFTER CHANGE = 0.1
[0:] *** COIN VALUE CHANGED DOWN. CURRENT COINVALUE = 0.1 ***
[0:] CHANGE DOWN 1
[0:] CHANGE DOWN 5
[0:] COIN VALUE CHANGED DOWN. CURRENT COINVALUE AFTER CHANGE = 0.05
[0:] *** COIN VALUE CHANGED DOWN. CURRENT COINVALUE = 0.05 ***
[0:] CHANGE DOWN 1
[0:] CHANGE DOWN 5
[0:] COIN VALUE CHANGED DOWN. CURRENT COINVALUE AFTER CHANGE = 1.38777878078145E-17
我要去哪里错了?应该是一个简单的计算。非常感谢您的宝贵时间。
舍入设置器末尾的值以消除任何不重要的数字
coinValue = Math.Round(coinValue, 2);