x = c(1, 8, 2, 6, 3, 8, 5, 5, 5, 5)
x
p=mean(x)
q=x-p
sum(q)
OUTPUT
1.776357e-15
Why am I getting such an output
is this a bug
x <- c(1, 8, 2, 6, 3, 8, 5, 5, 5, 5)
x
#> [1] 1 8 2 6 3 8 5 5 5 5
p <- mean(x)
p
#> [1] 4.8
q <- x - p
sum(q)
#> [1] 1.776357e-15
Why are we getting such an output for these values only?
float_ints <- function(x) {
p <- mean(x)
q <- x - p
sum(q)
}
x <- c(1, 8, 2, 6, 3, 8, 7, 7, 7, 7)
float_ints(x)
#> [1] 3.552714e-15
This is what is known as a floating point error. For typeof double
R
carries out the decimal places just so far. For example, 2.99
is represented as
2.99
#> [1] 2.99
options(digits = 22)
2.99
#> [1] 2.990000000000000213163
The number you expect is zero.
round(sum(q),1) will get you zero.
1 Like
Dplyr has a useful function for this
This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.
If you have a query related to it or one of the replies, start a new topic and refer back with a link.