Math.Round()似乎不一致

本文关键字:不一致 Round Math | 更新日期: 2023-09-27 18:13:26

可能重复:
.Net Round Bug
在C#中:Math.Round(2.5(的结果是2(而不是3(!你在开玩笑吗?

代码:

var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62

为什么会这样?

Math.Round()似乎不一致

默认情况下,Math.Round使用一种称为Banker’s rounding的四舍五入形式,当输入介于两个整数之间时,该形式会舍入到最接近的偶数整数。

请参阅为什么.NET使用银行四舍五入作为默认值?以了解此设计决策。

如果您不喜欢这种行为,您可以始终使用Math.Round的重载,它允许您指定MidPointRoundingMode(ToEven,AwayFromZero(。

您可以通过调用该方法的重载来更改此行为-http://msdn.microsoft.com/en-us/library/ms131274.aspx