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.

Reply via email to