此示例代码产生意外结果
decimal s = 463.815M;
decimal a = Math.Round(s, 2, MidpointRounding.AwayFromZero);
decimal b = Math.Round(s, 2, MidpointRounding.ToEven);
decimal t = 4.685M;
decimal c = Math.Round(t, 2, MidpointRounding.AwayFromZero);
decimal d = Math.Round(t, 2, MidpointRounding.ToEven);
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.Read();
463.82
463.82
4.69
4.68
我原本期望 a 和 c 增加1,c确实会增加,但令我惊讶的是没有。有人可以解释这个原因吗?
[更新
预计a和c的结果与:相同答案 0 :(得分:2)
这是预期的结果,因为0.815
分数向上舍入为0.82
。当你舍入到偶数时会发生同样的事情,因为2
是偶数。
如果您使用0.825
作为分数,结果会有所不同:
decimal s = 463.825M;
decimal a = Math.Round(s, 2, MidpointRounding.AwayFromZero);
decimal b = Math.Round(s, 2, MidpointRounding.ToEven);
现在代码prints
463.83
463.82
说明MidpointRounding.AwayFromZero
和MidpointRounding.ToEven
之间的区别。