可能重复:
.Net Round Bug
In C#: Math.Round(2.5) result is 2 (instead of 3)! Are you kidding me?Math.Round()似乎并不一致
代码:
var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62
为什么会这样呢?
可能重复:
.Net Round Bug
In C#: Math.Round(2.5) result is 2 (instead of 3)! Are you kidding me?Math.Round()似乎并不一致
代码:
var d1 = Math.Round(187.5); // 188
var d2 = Math.Round(62.5); // 62
为什么会这样呢?
缺省情况下,使用Math.Round
的舍入称为Banker's Rounding,其舍入到最接近偶数整数当输入中途两个整数之间的形式。
请参阅Why does .NET use banker's rounding as default?了解此设计决策。
如果你不喜欢这种行为,你总是可以使用this overload的Math.Round
,它允许你指定MidPointRoundingMode
(ToEven,AwayFromZero)。
您可以用呼叫改变这种行为,这种超负荷的方法 - http://msdn.microsoft.com/en-us/library/ms131274.aspx
@Joey:请从编辑帖子刚后,他们已张贴,尤其是在编辑窗口避免。谢谢。 – Ani
这在技术上是可行的;这篇文章缺乏信息,即使在编辑窗口之后仍然有很多答案。无论如何,您可以恢复或覆盖您在这种情况下所做的更改,那么我所做的工作会受到哪些伤害? – Joey
@Joey:您可能会等待一段时间,因为在编辑窗口期间很有可能正在编辑帖子。在这种情况下,我实际上并没有'重写' - 它实际上是一个冲突编辑的例子。 – Ani