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). See ‘Details’ about
“round to even” when rounding off a 5.
signif
rounds the values in its first argument to the specified
number of significant digits. Hence, for numeric
x
,
signif(x, dig)
is the same as round(x, dig - ceiling(log10(abs(x))))
.
For complex
x
, this is not the case,
see the ‘Details’.
Usage
# S3 method for default
round(x, digits = 0)
Arguments
- x
a numeric vector. Or, for
round
andsignif
, a complex vector.- digits
integer indicating the number of decimal places (
round
) or significant digits (signif
) to be used. Forround
, negative values are allowed (see ‘Details’).
Details
These 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 (see also
‘IEEE 754’) 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
).
Rounding to a negative number of digits means rounding to a power of
ten, so for example round(x, digits = -2)
rounds to the nearest
hundred.
For signif
the recognized values of digits
are
1...22
, and non-missing values are rounded to the nearest
integer in that range. 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.
These are all primitive functions.
Examples
round(.5 + -2:4) # IEEE / IEC rounding: -2 0 0 2 2 4 4
#> [1] -2 0 0 2 2 4 4
## (this is *good* behaviour -- do *NOT* report it as bug !)
( x1 <- seq(-2, 4, by = .5) )
#> [1] -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
round(x1) #-- IEEE / IEC rounding !
#> [1] -2 -2 -1 0 0 0 1 2 2 2 3 4 4
x1[trunc(x1) != floor(x1)]
#> [1] -1.5 -0.5
x1[round(x1) != floor(x1 + .5)]
#> [1] -1.5 0.5 2.5
(non.int <- ceiling(x1) != floor(x1))
#> [1] FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
#> [13] FALSE
x2 <- pi * 100^(-1:3)
round(x2, 3)
#> [1] 0.031 3.142 314.159 31415.927 3141592.654
signif(x2, 3)
#> [1] 3.14e-02 3.14e+00 3.14e+02 3.14e+04 3.14e+06