数学.带中点舍入的四舍五入
本文关键字:四舍五入 舍入 数学 | 更新日期: 2023-09-27 18:25:44
此示例代码正在生成意外的结果
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增加了1,但令我惊讶的是a没有。有人能解释一下原因吗?
[更新]
预计a和c的结果与相同
- a有.815,c也有.685,即结尾处的5
- a和c都在使用MidpointRounding.AwayFromZero
这是预期结果,因为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);
现在代码打印
463.83
463.82
以说明CCD_ 5与CCD_。