Skip to content

help for the first poster- a simple question

8 messages · jim holtman, Gavin Simpson, Uwe Ligges +4 more

#
Hi, there, 
I cannot  get accurate value  for calculation.
for example:
ld<-sqrt(1*0.05*0.95*0.05*0.95)
0.05*0.95-ld=-6.938894e-18
0.05*0.95-ld==0 is False.

I met this problem in my program, how can I handle it. Thanks.


xj.
#
FAQ 7.31  (You need to understand what floating point numbers are)
On 3/3/08, Xuejun Qin <xjq at chg.duhs.duke.edu> wrote:

  
    
#
On Mon, 2008-03-03 at 12:52 -0500, Xuejun Qin wrote:
Answer 1:

Read FAQ 7.31 -

http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f

Answer 2:

Use all.equal()
[1] -6.938894e-18
[1] FALSE
[1] TRUE
HTH

G
#
Xuejun Qin wrote:
Yes, PLEASE do read the posting guide, first poster!
There you will find that there are FAQs where your first poster's 
question is already answered. And that the subject line can be used in a 
sensible manner.

Best,
Uwe Ligges
#
R FAQ 7.31. G.
On Mon, Mar 03, 2008 at 12:52:43PM -0500, Xuejun Qin wrote:

  
    
#
On 03/03/08 12:52, Xuejun Qin wrote:
I think what you are experiencing is this:
http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f

(R FAQ "7.31 Why doesn't R think these numbers are equal?")

Maybe handle it using round(). 

HTH

m.
#
Thanks for all response. Here  is  more closer to my question,
p<-0.05

f<-0.05

ld<-sqrt(f* (1 - f) * p * (1 - p))

D <- (p * (1 - f) - ld)/p

d <- ((1 - p) * f - ld)/(1 - p)

haplo<-data.frame(D,d)
D             d
1 -1.387779e-16 -7.304099e-18

cond1<-pmin(haplo[,1],haplo[,2])

haplo[cond1>=0,]

But  the  program cannot get  right one, because


 -1.387779e-16>=0 is FALSE

 -7.304099e-18>=0 is FALSE



Thank you!

xj.


----- Original Message ----- 
From: "Gavin Simpson" <gavin.simpson at ucl.ac.uk>
To: "Xuejun Qin" <xjq at chg.duhs.duke.edu>
Cc: <r-help at r-project.org>
Sent: Monday, March 03, 2008 12:57 PM
Subject: Re: [R] help for the first poster- a simple question
#
Hi

r-help-bounces at r-project.org napsal dne 03.03.2008 20:12:34:
Either do not use computers as they sometimes can not represent exactly 
fractional values. Or use rounding, 
haplo[round(cond1, 10)>=0,]

Regards
Petr
http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-
http://www.R-project.org/posting-guide.html