round2 | R Documentation |
'round2' works like 'round' but the rounding has base 2 under consideration so that bits (binary digits) beyond a certain theshold are zeroed.
round2(x, digits10 = 0)
x |
Same as |
digits10 |
Same as |
round2()
is intended to allow reliable and safe for
==
comparisons provided both sides have the function
applied to the same value of digits10
. Internally a
numeric has its binary representation (bits)
past a certain point
set to all 0s, while retaining a certain degree of accuracy.
Algorithmically, x
is multiplied by 2^exponent
and then rounded, and then divided by 2^exponent
.
The value of exponent
is approximately 3 *
digits10
when digits10
is positive. If digits10
is negative then what is returned is round(x, digits10)
.
The value of exponent
guarantees that x
has been
rounded to at least digits10
decimal places (often around
digits10 + 1
for safety).
Something similar to round
.
T. W. Yee.
round
,
tobit
.
set.seed(1); x <- sort(rcauchy(10))
x3 <- round2(x, 3)
x3 == round2(x, 3) # Supposed to be reliable (all TRUE)
rbind(x, x3) # Comparison
(x3[1] * 2^(0:9)) / 2^(0:9)
print((x3[1] * 2^(0:11)), digits = 14)
# Round to approx 1 d.p.
x1 <- round2(x, 1)
x1 == round2(x, 1) # Supposed to be reliable (all TRUE)
rbind(x, x1)
x1[8] == 0.75 # 3/4
print((x1[1] * 2^(0:11)), digits = 9)
seq(31) / 32
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.