可能重複:
.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