20

在 C# 中,两种小数舍入策略的准确性MidpointRounding.ToEven和? 有什么区别MidpointRounding.AwayFromZero吗?我的意思是两者都确保四舍五入的数字之间的均匀分布,还是一种舍入策略优于表示舍入数字与另一种相比?

4

2 回答 2

48

来自 MSDN:

默认情况下,Math.Round 使用 MidpointRounding.ToEven。大多数人不熟悉“四舍五入”作为替代选项,“从零四舍五入”在学校更常见。.NET 默认为“四舍五入”,因为它在统计上更优越,因为它不具有“从零四舍五入”的趋势,向上舍入的频率略高于向下舍入的频率(假设被四舍五入的数字往往是正数。 )

根据数据集,对称算术舍入可能会引入主要偏差,因为它总是向上舍入中点值。举一个简单的例子,假设我们想要确定三个值的平均值,1.5、2.5 和 3.5,但是我们想在计算它们的平均值之前先将它们四舍五入到最接近的整数。请注意,这些值的真实平均值是 2.5。使用对称算术舍入,这些值变为 2、3 和 4,它们的平均值为 3。使用银行家舍入,这些值变为 2、2 和 4,它们的平均值为 2.67。因为后一种舍入方法更接近三个值的真实平均值,所以它提供的数据损失最少。

http://msdn.microsoft.com/en-us/library/system.math.round.aspx

于 2011-09-09T10:44:15.543 回答
13

如果你的值是123.45那么

123.5 <-- MidpointRounding.AwayFromZero
123.4 <-- MidpointRounding.ToEven

于 2019-02-27T19:07:12.133 回答