> Why, in R, does (0.1 + 0.05) > 0.15 evaluate to True? Because floating point arithmetic is done with a fixed number of digits. If you are working in base 10 and have 2 digits to work with you would have 1/3 -> .33 2/3 -> .67 so that 1/3 + 1/3 < 2/3
> How can I ensure this (ostensibly incorrect) behavior doesn't > introduce bugs into my code? You can index things with integers. E.g., instead of storing 0.1, 0.05, and 0.15, store 2, 1, and 3. Do your comparisons on the integers and multiply by 0.05 when you need to use them in that format. You can work with numbers that are exactly representable with 52 binary digits, such as 1/1024 or 10^14+1/8. You can work with smooth functions so the it doesn't matter much what the sign of 0.15 - (0.10 + 0.05) is. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of Dave Mitchell > Sent: Wednesday, January 30, 2013 12:32 PM > To: r-help@r-project.org > Subject: [R] arithmetic and logical operators > > Why, in R, does (0.1 + 0.05) > 0.15 evaluate to True? What am I missing > here? How can I ensure this (ostensibly incorrect) behavior doesn't > introduce bugs into my code? Thanks for your time. > > Dave Mitchell > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. ______________________________________________ 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.