| Math.Round (Decimal, Int32) | 將小數值舍入到指定精度。 由 .NET Compact Framework 支持。 |
| Math.Round (Double, Int32) | 將雙精度浮點值舍入到指定精度。 由 .NET Compact Framework 支持。 |
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.
四舍六入五成雙
四舍六入五成雙是一種比較精確比較科學的計數保留法,是一種數字修約規則。
對於位數很多的近似數,當有效位數確定后,其后面多余的數字應該舍去,只保留有效數字最末一位,這種修約(舍入)規則是“四舍六入五成雙”,
也即“4舍6入5湊偶”這里“四”是指≤4 時舍去,
"六"是指≥6時進上,
"五"指的是根據5后面的數字來定,當5后有數時,舍5入1;
當5后無數或為0時,需要分兩種情況來講:
①5前為奇數,舍5入1;
②5前為偶數,舍5不進。
具體規則如下:
1. 被修約的數字等於或小於4時,該數字舍去;
2. 被修約的數字等於或大於6時,則進位;
3. 被修約的數字等於5時,要看5前面的數字,若是奇數則進位,若是偶數則將5舍掉,即修約后末尾數字都成為偶數;若5的后面還有不為“0”的任何數,則此時無論5的前面是奇數還是偶數,均應進位。
舉例,用上述規則對下列數據保留3位有效數字:
9.8249=9.82, 9.82671=9.83
9.8350=9.84, 9.8351 =9.84
9.8250=9.82, 9.82501=9.83
從統計學的角度,“四舍六入五成雙”比“四舍五入”要科學,在大量運算時,它使舍入后的結果誤差的均值趨於零,而不是像四舍五入那樣逢五就入,導致結果偏向大數,使得誤差產生積累進而產生系統誤差,“四舍六入五成雙”使測量結果受到舍入誤差的影響降到最低。
例如:1.15+1.25+1.35+1.45=5.2,
若按四舍五入取一位小數計算:
1.2+1.3+1.4+1.5=5.4
按“四舍六入五成雙”計算,
1.2+1.2+1.4+1.4=5.2,舍入后的結果更能反映實際結果。
