round
對數值進行四捨五入的函數
Round 函數即四捨五入取偶。
Round 函數在MSDN里的中文釋義為四捨五入,這是翻譯時的疏忽。
在 VB,VBScript,C#,J#,T-SQL 中 Round 函數都是採用 Banker's rounding(銀行家舍入)演演算法,即四舍六入五取偶。事實上這也是 IEEE 規定的舍入標準。因此所有符合 IEEE 標準的語言都應該是採用這一演演算法的。
為了避免四捨五入規則造成的結果偏高,誤差偏大的現象出現,一般採用四舍六入五留雙規則(Banker's Rounding)。
準確而言,四舍六入五留雙應稱作“四舍六入,逢五無後則留雙”,如此就可以完全覆蓋此規則的詳情。
四舍六入五留雙規則的具體方法是:
(一)當尾數小於或等於4時,直接將尾數捨去。
例如,將下列數字全部修約為四位有效數字,結果為:
(二)當尾數大於或等於6時,將尾數捨去並向前一位進位。
例如,將下列數字全部修約為四位有效數字,結果為:
(三)當尾數為5,而尾數後面的數字均為0時,應看尾數“5”的前一位:若前一位數字此時為奇數,就應向前進一位;若前一位數字此時為偶數,則應將尾數捨去。數字“0”在此時應被視為偶數。
例如,將下列數字全部修約為四位有效數字,結果為:
(四)當尾數為5,而尾數“5”的後面還有任何不是0的數字時,無論前一位在此時為奇數還是偶數,也無論“5”後面不為0的數字在哪一位上,都應向前進一位。
例如,將下列數字全部修約為四位有效數字,結果為:
雖然“四捨五入”是中國最早提出的演演算法,值得我們自豪,但不能因此就認為它始終是先進的。畢竟它已經有近二千年歷史了(大約一千七百多年前,天文學家楊偉就已明確提出了“四捨五入法”)。
四捨五入演演算法逢五就要進位,帶來的問題就是結果偏大,尤其是在大量的數據統計中。Banker 舍入則在統計概率上解決了這個問題。
ROUND:
四捨五入函數ROUND()
格式:ROUND(<;數值表達式>;,<;有效位數>;)
功能:對<;數值表達式>;的值按指定的<;有效位數>;進行四捨五入。如果<;有效位數>;(用n表示)為正數或零,則對小數點后n+1位進行四捨五入;如果n為負數,則對小數點前n位進行四捨五入。
round函數為Oracle中的四捨五入函數。
Round(number,[decimals])
其中:
number 待做四捨五入處理的數值
decimals 指明需保留小數點後面的位數。可選項,忽略它則保留0位小數,精確到個位;為負數,表示為小數點左邊四捨五入處理。
例:
SQL> select round(123.123),
2 round(123.123,2),
3 round(123.16,2),
4 round(123.14,-2),
5 round(163.14,-2)
6 from dual;
ROUND(123.123) ROUND(123.123,2) ROUND(123.16,2) ROUND(123.14,-2) ROUND(163.14,-2)
123 123.12 123.16 100 200
函數簡介
調用格式:Y = round(X)
在matlab中round也是一個四捨五入函數。在matlab的命令窗口中輸入doc round或者help round即可獲得該函數的相關幫助信息。
相關函數:ceil、floor、fix
程序示例
>>a = [-1.9,-0.2,3.4,5.6,7.0,2.4+3.6i]
a =
Columns 1 through 4
-1.9000 -0.2000 3.4000 5.6000
Columns 5 through 6
⒎0000 2.4000 + 3.6000i
>>round(a)
ans =
Columns 1 through 4
-2.0000 0 3.0000 6.0000
Columns 5 through 6
⒎0000 2.0000 + 4.0000i
a =
Columns 1 through 4
-1.9000 -0.2000 3.4000 5.6000
Columns 5 through 6
⒎0000 2.4000 + 3.6000i
ROUND(number,decimals)
number:要舍入的數
decimals:指定的保留小數的位數
decimals的取值可為正數,0,負數。當decimals的值為正數時,針對小數點后的數據進行四捨五入;當decimals的值為0時,返回最接近number的整數;當decimals的值為負數時,針對小數點前的數據進行四捨五入,被舍掉的數據用0佔位。
示例:
decimas為正數:
ROUND(123.456,2) 返回結果為:123.46
ROUND(123.456,0) 返回結果為:123
ROUND(123.456,-2) 返回結果為:100