On Thu, 2004-11-11 at 12:24 -0500, Drew Hoysak wrote: > I am experiencing strange (to me) output when trying to do simple > calculations. Expressions that should equal zero yield non-zero > values. > Examples: > > > a <- 4.1-3.1 > > b <- 5.1-4.1 > > a-b > [1] -4.440892e-16 > > > > (4.1-3.1)-(5.1-4.1) > [1] -4.440892e-16 > > > When this last expression is expanded, I get the right answer: > > > 4.1-3.1-5.1+4.1 > [1] 0 > > > I am using the binary packaged version R-2.0.0-0.fdr.1.fc2.i386.rpm for > Linux Fedora Core 2. I had the same problem with version 1.9.0-0
> Can anyone tell me what is going on? A lack of understanding as to how floating point numbers are represented by computers under the IEEE 754 floating point standard. Hint: Take note of the following: > print(0.1, digits = 20) [1] 0.10000000000000000555 > print(4.1, digits = 20) [1] 4.0999999999999996447 > print(4.1 - 3.1, digits = 20) [1] 0.99999999999999955591 > print(4.1 - 3.1 - 5.1, digits = 20) [1] -4.0999999999999996447 Read the last FAQ "Why is 0.1 not 0.1?" here: http://grouper.ieee.org/groups/754/faq.html#binary-decimal and read David Goldberg's article, "What Every Computer Scientist Should Know about Floating-Point Arithmetic", which is available here: http://grouper.ieee.org/groups/754/ in a Postscript file or here in an edited form in HTML: http://docs.sun.com/source/806-3568/ncg_goldberg.html HTH, Marc Schwartz ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html