Full_Name: Dong-Yun Kim Version: 1.7.0/1.8.1 OS: WinMe/WinXP Submission from: (NULL) (4.33.147.192) Hi all, It appears that R has a problem with evaluating logical "==" operator. The following are a few examples I found:> 2.1+0.2==2.3[1] FALSE> 2.7+0.1==2.8[1] FALSE> 2.7+0.2==2.9[1] FALSE> 3.1+0.2==3.3[1] FALSE Thanks. Dong-Yun Kim
ligges@statistik.uni-dortmund.de
2004-Mar-24 15:44 UTC
[Rd] "==" gives incorrect answers! (PR#6691)
dongyunhkim@yahoo.com wrote:> Full_Name: Dong-Yun Kim > Version: 1.7.0/1.8.1 > OS: WinMe/WinXP > Submission from: (NULL) (4.33.147.192) > > > Hi all, > > It appears that R has a problem with evaluating logical "==" operator. The > following are a few examples I found: > > >>2.1+0.2==2.3 > > [1] FALSE > >>2.7+0.1==2.8 > > [1] FALSE > >>2.7+0.2==2.9 > > [1] FALSE > >>3.1+0.2==3.3 > > [1] FALSE > > Thanks. > > Dong-Yun Kim > > ______________________________________________ > R-devel@stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-develNot a bug! These are (expected!) numerical issues of the representation of those values. Please read help("==") which tells you: "For numerical values, remember == and != do not allow for the finite representation of fractions, nor for rounding error. Using all.equal with identical is almost always preferable." And ?all.equal and ?identical tell you to use: identical(all.equal(2.7 + 0.1, 2.8), TRUE) Uwe Ligges
dongyunhkim@yahoo.com writes:> Full_Name: Dong-Yun Kim > Version: 1.7.0/1.8.1 > OS: WinMe/WinXP > Submission from: (NULL) (4.33.147.192) > > > Hi all, > > It appears that R has a problem with evaluating logical "==" operator. The > following are a few examples I found: > > > 2.1+0.2==2.3 > [1] FALSE > > 2.7+0.1==2.8 > [1] FALSE > > 2.7+0.2==2.9 > [1] FALSE > > 3.1+0.2==3.3 > [1] FALSE > > Thanks. > > Dong-Yun KimPlease, do read up on elementary computer theory, in particular the parts about inexact representation of decimal numbers as floating point numbers, and why equality of such numbers cannot be trusted! What you're seeing is the moral equivalent of 1/3 + 1/6 = 0.333 + 0.666 = 0.999 != 1 -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907