Math.Round到底是"四捨五入"還是"五舍六入" - 成長曆程 - 博客園


環境VS2005,VS2003 sp1 測試。


Math.Round (Decimal, Int32) 將小數值舍入到指定精度。
由 .NET Compact Framework 支持。
Math.Round (Double, Int32)

 


msdn並沒有詳細的說明清楚,給了一個例子;

Math.Round(3.44, 1); //Returns 3.4.

Math.Round(3.45, 1); //Returns 3.4.
Math.Round(3.46, 1); //Returns 3.5.

依照他的例子得到的是"五舍六入",我改變了一下數字得到的結果將完全改變。

Math.Round(3.445, 1); //Returns 3.4.
Math.Round(3.455, 1); //Returns 3.5.
Math.Round(3.465, 1); //Returns 3.5.

Math.Round(3.450, 1); //Returns 3.4.(補0是無效的)

Math.Round(3.4452, 2); //Returns 3.45.
Math.Round(3.4552, 2); //Returns 3.46.
Math.Round(3.4652, 2); //Returns 3.47.

非常奇怪當你需要獲得小數點後面一位時,第一位參數必需要比你需要的位數多出兩位數時纔是正常的“四捨五入”,否則將是“五舍六入”,看來只能自已寫四捨五入的算法,不能依賴Math.Round,否則我無法知道他何時使用四舍還是五舍,除非你定死你的第一位參數的位數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章