Beyond the R FAQ 7.31 the article "What Every Computer Scientist Should Know About Floating-Point Arithmetic, by David Goldberg" (http://docs.sun.com/source/806-3568/ncg_goldberg.html) is very informative, but it is rather long (this topic has many subtleties). Wikipedia has a shorter page on "Floating point arithmetic", (http://en.wikipedia.org/wiki/Floating_point) which covers some of the most important points for scientists who are not computer scientists, and also has many links.
If it's really important to have exact representation for decimal fractions, then look at the draft IEEE proposal for "General Decimal Arithmetic" (http://www2.hursley.ibm.com/decimal/ ) which states: "Most computers today support binary floating-point in hardware. While suitable for many purposes, binary floating-point arithmetic should not be used for financial, commercial, and user-centric applications or web services because the decimal data used in these applications cannot be represented exactly using binary floating-point. (See the Frequently Asked Questions pages for more explanation and examples.)" (I would quibble with the blanket statement that "binary floating-point arithmetic should not be used for financial [...] applications" -- it all depends on the needs of the particular financial application.) I don't believe that there are any facilities in R for doing decimal arithmetic, but I would guess that some accounting applications might offer some. -- Tony Plate (I removed R-bugs from the cc list because it's not a bug, as has already been noted.) [EMAIL PROTECTED] wrote: > Hi > > Thanks for the quick reply. However, I am not satisfied, as > >>round(3.15000000, 1) > > [1] 3.1 > >>round(3.75000000, 1) > > [1] 3.8 > > I think the problem is really more of an error in the rounding off > algorithm than finite precision. > > Thanks > Teckpor > > -----Original Message----- > From: Uwe Ligges [mailto:[EMAIL PROTECTED] > Sent: Monday, May 29, 2006 17:45 > To: [EMAIL PROTECTED] > Cc: [EMAIL PROTECTED] > Subject: Re: [Rd] Numerical error in R (win32) (PR#8909) > > [EMAIL PROTECTED] wrote: > > >>Hi >> I had observed the following problem in R (also C, Matlab, and > > Python). > >>sprintf('%1.2g\n', 3.15) >>give 3.1 instead of 3.2 whereas an input of 3.75 gives 3.8. >>Java's System.out.printf is ok though. >> >> >> >>>round(3.75,1) >> >>[1] 3.8 >> >> >>>round(3.15,1) >> >>[1] 3.1 >> >>Similar outcome with sprintf in R. >> >> >>However, the right answer should be 3.2 > > > This is not a bug. > > Please read the R FAQ "Why doesn't R think these numbers are equal?" and > after that note that *numerically* the following inaqualities are TRUE: > (3.2 - 3.15) > 0.05 > (3.15 - 3.1) < 0.05 > > Uwe Ligges > > > >>Regards >>Teckpor >> >> >> [[alternative HTML version deleted]] >> >>______________________________________________ >>R-devel@r-project.org mailing list >>https://stat.ethz.ch/mailman/listinfo/r-devel > > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel