Round                  package:base                  R Documentation

_R_o_u_n_d_i_n_g _o_f _N_u_m_b_e_r_s

_D_e_s_c_r_i_p_t_i_o_n:

     'ceiling' takes a single numeric argument 'x' and returns a
     numeric vector containing the smallest integers not less than the
     corresponding elements of 'x'.

     'floor' takes a single numeric argument 'x' and returns a numeric
     vector containing the largest integers not greater than the
     corresponding elements of 'x'.

     'trunc' takes a single numeric argument 'x' and returns a numeric
     vector containing the integers formed by truncating the values in
     'x' toward '0'.

     'round' rounds the values in its first argument to the specified
     number of decimal places (default 0).

     'signif' rounds the values in its first argument to the specified
     number of significant digits.

     'zapsmall' determines a 'digits' argument 'dr' for calling
     'round(x, digits = dr)' such that values "close to zero" (compared
     with the maximal absolute value) are "zapped", i.e., treated as
     '0'.

_U_s_a_g_e:

     ceiling(x)
     floor(x)
     trunc(x)

     round(x, digits = 0)
     signif(x, digits = 6)
     zapsmall(x, digits = getOption("digits"))

_A_r_g_u_m_e_n_t_s:

       x: a numeric vector.  A complex vector is allowed for 'round',
          'signif' and 'zapsmall'.

  digits: integer indicating the precision to be used.

_D_e_t_a_i_l_s:

     All but 'zapsmall' are generic functions: methods can be defined
     for them individually or via the 'Math' group generic.

     Note that for rounding off a 5, the IEC 60559 standard is expected
     to be used, "_go to the even digit_". Therefore 'round(0.5)' is
     '0' and 'round(-1.5)' is '-2'.  However, this is dependent on OS
     services and on representation error (since e.g. '0.15' is not
     represented exactly, the rounding rule applies to the represented
     number and not to the printed number, and so 'round(0.15, 1)'
     could be either '0.1' or '0.2').

     For 'signif' the recognized values of 'digits' are '1...22'.  As
     from R 2.2.0 complex numbers are rounded to retain the specified
     number of digits in the larger of the components.  Each element of
     the vector is rounded individually, unlike printing.

_R_e_f_e_r_e_n_c_e_s:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_. Wadsworth & Brooks/Cole. (Except 'zapsmall'.)

     Chambers, J. M. (1998) _Programming with Data. A Guide to the S
     Language_. Springer. ('zapsmall'.)

_S_e_e _A_l_s_o:

     'as.integer'.

_E_x_a_m_p_l_e_s:

     round(.5 + -2:4) # IEEE rounding: -2  0  0  2  2  4  4
     ( x1 <- seq(-2, 4, by = .5) )
     round(x1)#-- IEEE rounding !
     x1[trunc(x1) != floor(x1)]
     x1[round(x1) != floor(x1 + .5)]
     (non.int <- ceiling(x1) != floor(x1))

     x2 <- pi * 100^(-1:3)
     round(x2, 3)
     signif(x2, 3)

     print   (x2 / 1000, digits=4)
     zapsmall(x2 / 1000, digits=4)
     zapsmall(exp(1i*0:4*pi/2))

