在C#中,精確度有兩個小數舍入策略MidpointRounding.ToEven
和MidpointRounding.AwayFromZero
?我的意思是確保均衡分佈的數字是四捨五入的,或者是一個舍入策略來代表舍入的數字與另一個比較?C#舍入MidpointRounding.ToEven vs MidpointRounding.AwayFromZero
11
A
回答
27
從MSDN:
默認情況下,Math.Round使用MidpointRounding.ToEven。大多數人並不熟悉「舍入到均勻」作爲替代方法,「捨棄零」在學校更常見。 .NET默認爲「舍入到平均值」,因爲它在統計學上更勝一籌,因爲它沒有「捨棄零」的趨勢,而是比四捨五入更加頻繁(假設數字四捨五入爲正數)。 )
根據數據集的不同,對稱算術舍入會引入一個主要偏差,因爲它總是向上舍入中點值。舉一個簡單的例子,假設我們想確定三個值的平均值,即1.5,2.5和3.5,但是我們希望在計算它們的均值之前先將它們四捨五入到最接近的整數。請注意,這些值的真正意思是2.5。使用四元數舍入法,這些值變爲2,3和4,並且它們的平均值爲3.使用銀行家舍入,這些值變爲2,2和4,並且它們的均值爲2.67。由於後者的舍入方法更接近三個值的真正意思,它提供了最少的數據丟失。
http://msdn.microsoft.com/en-us/library/system.math.round.aspx
相關問題
- 1. c#中的舍入bug?
- 2. 雙VS小數的舍入在C#
- 3. MidpointRounding.AwayFromZero
- 4. 用C舍入到上面的單元#
- 5. JavaScript VS PHP四捨五入
- 6. C#四捨五入負指數雙值
- 7. C++ printf舍入?
- 8. 如何在c#中舍入float值?
- 9. C++舍入問題
- 10. 舍入到C#中的下一個10美分(硬幣)
- 11. VS 2012的舍入行爲printf()
- 12. 舍入到0的位置#
- 13. 使用Math.Round與MidpointRounding.AwayFromZero圍繞數字
- 14. Math.Round bug 81.725 MidpointRounding.AwayFromZero = 81.72
- 15. 舍入到即使在C#
- 16. C中的舍入函數
- 17. 不需要的舍入C++
- 18. C#和XSLT舍入差異
- 19. C++ ATOF/_wtof,舍入誤差
- 20. C++舍入隨機雙
- 21. 舍入C預處理器
- 22. C++雙舍入問題
- 23. 舍入誤差在C++
- 24. 在C中舍入double值#
- 25. 在C#中舍入。淨
- 26. C#浮點舍入行爲
- 27. BigDecimal舍入不捨入
- 28. R舍入函數舍入
- 29. 像素四捨五入在Android VS iPhone VS Safari /鉻/ FF
- 30. 如何減少C/C++浮點舍入
接受的回答了這個問題:http://stackoverflow.com/questions/311696/why-does-net-use-bankers-rounding-as-default應該明確的事情了:) – MattDavey
我認爲下面的例子更好地解釋了它。 :) –
是的,它確實:) - 鏈接的問題有很多的背景信息.. – MattDavey