在C#中乘以十进制值时,我注意到一种奇怪的行为.考虑以下乘法运算:
1.1111111111111111111111111111m * 1m = 1.1111111111111111111111111111 // OK
1.1111111111111111111111111111m * 2m = 2.2222222222222222222222222222 // OK
1.1111111111111111111111111111m * 3m = 3.3333333333333333333333333333 // OK
1.1111111111111111111111111111m * 4m = 4.4444444444444444444444444444 // OK
1.1111111111111111111111111111m * 5m = 5.5555555555555555555555555555 // OK
1.1111111111111111111111111111m * 6m = 6.6666666666666666666666666666 // OK
1.1111111111111111111111111111m * 7m = 7.7777777777777777777777777777 // OK
1.1111111111111111111111111111m * 8m = 8.888888888888888888888888889 // Why not 8.8888888888888888888888888888 ?
1.1111111111111111111111111111m * 9m = 10.000000000000000000000000000 // Why not 9.9999999999999999999999999999 ?
Run Code Online (Sandbox Code Playgroud)
我无法理解的是上述最后两个案例.怎么可能?
简而言之,
我早上开始运行我的C#程序,程序应该在下午5:45向用户显示一条消息.我怎么能在C#中做到这一点?
编辑:我问过这个问题因为我认为使用计时器不是最好的解决方案(定期比较当前时间和运行任务所需的时间):
private void timerDoWork_Tick(object sender, EventArgs e)
{
if (DateTime.Now >= _timeToDoWork)
{
MessageBox.Show("Time to go home!");
timerDoWork.Enabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)