可能重复:
.Net Round Bug
In C#: Math.Round(2.5) result is 2 (instead of 3)! Are you kidding me?
代码:
var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62
为什么会这样?
答案 0 :(得分:17)
默认情况下,Math.Round
使用称为Banker's Rounding的舍入形式,当输入位于两个整数之间时,它会舍入到最近的偶数整数。
请参阅Why does .NET use banker's rounding as default?以了解此设计决策。
如果您不喜欢此行为,则可以始终使用Math.Round
MidPointRoundingMode
,{{1}},您可以指定{{1}}(ToEven,AwayFromZero)。
答案 1 :(得分:2)
您可以通过调用此方法的重载来更改此行为 - http://msdn.microsoft.com/en-us/library/ms131274.aspx