R語言初級教程(08): 取整運算、有效小數、有效數字
R語言初級教程(08): 取整運算、有效小數、有效數字
來自專欄 R語言初級教程2 人贊了文章
- 取整運算:通俗點講就是將一個小數(浮點數)轉化成整數。比如,我們可以將3.42轉化為3或者4。
- 有效小數:將一個小數近似為小數位特定的小數。比如,將3.1415926轉化為兩位有效小數,即3.14。
- 有效數字:將一個數近似為特定有效位數的數字。比如,將23456保留兩位有效數字,即23000。
在R中,以上操作有一組函數:
- 取整運算:
ceiling()
,floor()
,trunc()
和round()
- 有效小數:
round()
- 有效數字:
signif()
下面通過一些例子來了解這些函數。
1. ceiling()函數
"ceiling"字面意思為「天花板」。ceiling()
函數返回對應數字的「天花板」值,即不小於該數字的最小整數,俗稱向上取整。比如:
ceiling(2.8)[1] 3ceiling(-1.7)[1] -1ceiling(5.0)[1] 5
2. floor()函數
floor()
函數返回對應數字的「地板」值,即不大於該數字的最大整數,俗稱向下取整。比如:
floor(2.8)[1] 2floor(-1.7)[1] -2floor(5.0)[1] 5
3. trunc()函數
trunc()
函數的特點是「向零取整」。 對於數字a,trunc(a)
將返回靠近0
那一側的那個整數,見下圖。如果a
為正數,trunc(a) == floor(a)
;如果a
為負數,trunc(a) == ceiling(a)
。
trunc(-1.7)[1] -1trunc(2.8)[1] 2trunc(5.0)[1] 5trunc(2.8) == floor(2.8)[1] TRUEtrunc(-1.7) == ceiling(-1.7)[1] TRUE
4. round()函數
對於小數點位數很多的數,當有效小數的位數確定後,其後面多餘的數字應該捨去,只保留到有效小數最後一位。
在R中採用banker準則,即四捨六入五成雙準則,詳情見https://en.wikipedia.org/wiki/Rounding。具體規則為:
- 「四舍」是指 ≤ 4捨去;
- 「六入」是指 ≥ 6進一位;
- 「五成雙」分兩種情況:(1)當5後面有數字時,舍5進一位。(2) 當5後面沒有數字時,再分兩種情況:(i)當5前一位為奇數時,舍5進一位;(ii)當5前一位為偶數時,舍5不進位。
round(2.3)[1] 2round(2.6)[1] 3round(2.50001)[1] 3round(2.5)[1] 2round(3.5)[1] 4round(5.0)[1] 5
其實round()
函數的原型是round(x, digits = 0)
。其中參數digits
設定小數點的位數,默認為0
,即小數點後零位(取整)。
我們來看一下保留一位小數(即digits = 1
)的例子:
round(3.24, 1)[1] 3.2round(3.26, 1)[1] 3.3round(3.2500001, 1)[1] 3.3round(3.25, 1)[1] 3.2round(3.35, 1)[1] 3.4
5. signif()函數
signif()
是保留有效數字的函數,常用於科學計數,它的原型為signif(x, digits = 6)
。其中參數digits
設定有效數字的位數,默認為6
。
signif(3.5455562)[1] 3.54556signif(35455562)[1] 35455600signif(35455562, 7)[1] 35455560signif(-35455562, 7)[1] -35455560
R中的取整運算、有效小數和有效數字就講到這。
如若有遺漏,後期將會添加至本博客。
感謝您的閱讀!想了解更多有關R語言技巧,請關注我的微信公眾號「R語言和Python學堂」,我將定期更新相關文章。
推薦閱讀: