On Mon, Mar 19, 2012 at 12:47:12PM +0000, Dajiang Liu wrote: > > Thanks a lot for the clarification. I just find it very bizarre that if you > run a=0.1*(1:9);which(a==0.4) > it returns the right answer. Anyway, I will pay attention next time. Thanks a > lot.
Hi. Yes, these things are bizarre sometimes. Compare print(0.1, digits=20) # [1] 0.10000000000000000555 print(4*0.1, digits=20) # [1] 0.4000000000000000222 print(0.4, digits=20) # [1] 0.4000000000000000222 Equality of the last two is the reason for which(0.1*(1:9) == 0.4) [1] 4 while for 0.3, we get print(3*0.1, digits=20) # [1] 0.30000000000000004441 print(0.3, digits=20) # [1] 0.2999999999999999889 See http://rwiki.sciviews.org/doku.php?id=misc:r_accuracy for further hints. Petr Savicky. ______________________________________________ R-help@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.