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準則,即四捨六入五成雙準則,詳情見en.wikipedia.org/wiki/R。具體規則為:

  • 「四舍」是指 ≤ 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學堂」,我將定期更新相關文章。


推薦閱讀:
查看原文 >>
相关文章