Vincent Hoi Nam asks:>
> Dear all,
>
> I'm currently use R v0.99 on Windows 98 Second Edition. I have a >
question on some simple calculations. I wonder that I've done something >
wrong with the calculation.
> Here is the imput commands:
>
> > a <- 25.01
> > b <- 56.08
> > a.trunc <- trunc(a)
> > b.trunc <- trunc(b)
> > a.tail <- a - a.trunc
> > b.tail <- b - b.trunc
> > a.trunc
> [1] 25
> > b.trunc
> [1] 56
> > a.tail
> [1] 0.01
> > b.tail
> [1] 0.08
> > a.tail <- (a - a.trunc) * 100
> > b.tail <- (b - b.trunc) * 100
> > a.tail
> [1] 1
> > b.tail
> [1] 8
> > N <- ( (b.trunc - a.trunc) * 12 ) + (b.tail - a.tail)
> > N
> [1] 379
> > N == 379
> [1] FALSE
>
> According to the above command and output, the value of N is equal to
> 379, but when I set the condition 'N =3D=3D 379' R gives
"FALSE" as the
> result. How do I avoid this problem?? I do the same thing in S-plus 4.0
> release 3 on Win98 SE and obtained the same result.
>
> I look forward to hear your reply.
You have mistaken the true value with the one printed. To see
why this happens try the following extra step
> abs(N - 379)
[1] 3.4106e-13
So while the two are very nearly equal, roundoff error foils (ie
spoils) exact equality.
--
Bill Venables, Statistician, CMIS Environmetrics Project
CSIRO Marine Labs, PO Box 120, Cleveland, Qld, AUSTRALIA. 4163
Tel: +61 7 3826 7251 Email: Bill.Venables at cmis.csiro.au
Fax: +61 7 3826 7304 http://www.cmis.csiro.au/bill.venables/
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at
stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._