[R] R calculates small numbers, where the result should be zero

PIKAL Petr petr.pikal at precheza.cz
Tue Sep 11 16:48:30 CEST 2012


Hi

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Andrea Gonnermann
> Sent: Tuesday, September 11, 2012 4:24 PM
> To: r-help at r-project.org
> Subject: [R] R calculates small numbers, where the result should be
> zero
> 
> Hi all,
> 
> my problem is that R does wrong calculations, when the result should be
> zero.
> I have the following code:
> 
>  RD_Var1 <- ((0.1*(1-0.1))/100)+((0.2*(1-0.2))/100)
>  RD_Var2 <- ((0.1*(1-0.1))/100)+((0.2*(1-0.2))/100)
>  RD_1 <- 0.1-0.2
>  RD_1
>  RD_2 <- 0.1-0.2
>  FEM_Eff_RD <-
> ((1/RD_Var1)*RD_1+(1/RD_Var2)*RD_2)/(1/RD_Var1+1/RD_Var2)
>  Q_RD    <- 1/RD_Var1*((RD_1-FEM_Eff_RD)^2)+1/RD_Var2*((RD_2-
> FEM_Eff_RD)^2)
>  Q_RD
> My result is:
> 1.540744e-31
> When I put the calculated numbers directly into the last formula, I get
> zero, which is the correct answer:
> Q_RD    <- 1/0.0025*((-0.1--0.1)^2)+1/0.0025*((-0.1--0.1)^2)
> 
> Why does R calculate the other number instead of zero?

Because you are probably using computer. Some fractional decimal numbers cannot be expressed as binary finite precision numbers. You can round your result to get 0. BTW it is covered in FAQ 7.31 (I believe)

Regards
Petr

> 
> Thank you very much for your help!
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list