環境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,否則我無法知道他何時使用四舍還是五舍,除非你定死你的第一位參數的位數。