C#从零开始舍入中点舍入.ToEven与中点舍入.away

C#从零开始舍入中点舍入.ToEven与中点舍入.away,c#,rounding-error,C#,Rounding Error,在C#中,两种十进制舍入策略中点舍入.ToEven和中点舍入.AwayFromZero的精度是否存在差异?我的意思是,这两种方法是否都能确保四舍五入的数字分布均匀,或者一种四舍五入策略比另一种更能代表四舍五入的数字?来自MSDN: 默认情况下,Math.Round使用中点rounding.ToEven。大多数人不熟悉“四舍五入到偶数”作为替代方法,“从零开始四舍五入”在学校里更普遍。NET默认为“四舍五入到偶数”,因为它在统计上具有优势,因为它不具有“从零开始四舍五入”的趋势,向上四舍五入的频率

在C#中,两种十进制舍入策略
中点舍入.ToEven
中点舍入.AwayFromZero
的精度是否存在差异?我的意思是,这两种方法是否都能确保四舍五入的数字分布均匀,或者一种四舍五入策略比另一种更能代表四舍五入的数字?

来自MSDN:

默认情况下,Math.Round使用中点rounding.ToEven。大多数人不熟悉“四舍五入到偶数”作为替代方法,“从零开始四舍五入”在学校里更普遍。NET默认为“四舍五入到偶数”,因为它在统计上具有优势,因为它不具有“从零开始四舍五入”的趋势,向上四舍五入的频率略高于向下四舍五入(假设四舍五入的数字趋于正)

根据数据集的不同,对称算术舍入可能会引入较大的偏差,因为它总是向上舍入中点值。举一个简单的例子,假设我们想要确定三个值的平均值,1.5、2.5和3.5,但是我们想要先将它们四舍五入到最接近的整数,然后再计算它们的平均值。请注意,这些值的真实平均值为2.5。使用对称算术四舍五入,这些值变为2、3和4,其平均值为3。使用四舍五入,这些值变为2、2和4,其平均值为2.67。由于后一种舍入方法更接近三个值的真实平均值,因此数据损失最小


如果您的值为123.45,则


123.5这个问题的公认答案是:应该把事情弄清楚:)我认为下面的例子解释得更好是的,它有:)-链接的问题有很多背景信息。。