R語言初級教程(08): 取整運算、有效小數、有效數字

  • 取整運算:通俗點講就是將一個小數(浮點數)轉化成整數。好比,咱們能夠將3.42轉化爲3或者4。git

  • 有效小數:將一個小數近似爲小數位特定的小數。好比,將3.1415926轉化爲兩位有效小數,即3.14。微信

  • 有效數字:將一個數近似爲特定有效位數的數字。好比,將23456保留兩位有效數字,即23000。app

在R中,以上操做有一組函數:函數

  • 取整運算: ceiling()floor()trunc()round()flex

  • 有效小數: round()spa

  • 有效數字: signif().net

下面經過一些例子來了解這些函數。3d

1. ceiling()函數

"ceiling"字面意思爲「天花板」。 ceiling()函數返回對應數字的「天花板」值,即不小於該數字的最小整數,俗稱向上取整。好比:code

    
  
  
   
   
   
   
  1. orm

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)


    
  
  
   
   
   
   
runc(-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語言技巧,請關注個人微信公衆號「輝小寶同窗」,我將按期更新相關文章。

爲了方便在電腦上閱讀,文章也同步更新到相應專欄:

  • 簡書: https://www.jianshu.com/c/0cf41526c59b

  • 知乎:https://zhuanlan.zhihu.com/c_1028949008911400960

本文分享自微信公衆號 - R語言和Python學堂(gh_02c4f77a735e)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索