An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090318/33eb3d75/attachment-0002.pl>
numeric equality
5 messages · Yu, Changhong, Sarah Goslee, David Smith +1 more
This is a FAQ: http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f and also covered nicely in Burns' R Inferno: www.burns-stat.com/pages/Tutor/R_inferno.pdf Sarah
On Wed, Mar 18, 2009 at 11:58 AM, Yu, Changhong <YuC at ccf.org> wrote:
Dear all, I am totally confused by the following R output, but don't have a clue for it.
a <- 1 - 0.2
a == 0.8
[1] TRUE
a <- 1 - 0.8
a == 0.2
[1] FALSE
a <- 1 - 0.5
a == 0.5
[1] TRUE
a <- 1 - 0.6
a == 0.4
[1] TRUE
a <- 1 - 0.9
a == 0.1
[1] FALSE My R version is Windows XP R version 2.8.1 (2008-12-22). Thanks very much. Changhong
Sarah Goslee http://www.functionaldiversity.org
On Wed, Mar 18, 2009 at 8:58 AM, Yu, Changhong <YuC at ccf.org> wrote:
Dear all, I am totally confused by the following R output, but don't have a clue for it.
a <- 1 - 0.2
a == 0.8
[1] TRUE
a <- 1 - 0.8
a == 0.2
[1] FALSE
This is expected behaviour. The bottom line is that you shouldn't rely on the equality operator when dealing with floating point values in any numerical software, including R. I write about this in detail at: http://blog.revolution-computing.com/2009/03/when-is-a-zero-not-a-zero.html which will hopefully clear up your questions. # David Smith
David M Smith <david at revolution-computing.com> Director of Community, REvolution Computing www.revolution-computing.com Tel: +1 (206) 577-4778 x3203 (Seattle, USA) Check out our upcoming events schedule at www.revolution-computing.com/events
Thanks very much. -----Original Message----- From: David M Smith [mailto:david at revolution-computing.com] Sent: Wednesday, March 18, 2009 12:55 PM To: Yu, Changhong Cc: r-help at r-project.org Subject: Re: [R] numeric equality
On Wed, Mar 18, 2009 at 8:58 AM, Yu, Changhong <YuC at ccf.org> wrote:
Dear all, I am totally confused by the following R output, but don't have a clue for it.
a <- 1 - 0.2
a == 0.8
[1] TRUE
a <- 1 - 0.8
a == 0.2
[1] FALSE
This is expected behaviour. The bottom line is that you shouldn't rely on the equality operator when dealing with floating point values in any numerical software, including R. I write about this in detail at: http://blog.revolution-computing.com/2009/03/when-is-a-zero-not-a-zero.h tml which will hopefully clear up your questions. # David Smith
David M Smith <david at revolution-computing.com> Director of Community, REvolution Computing www.revolution-computing.com Tel: +1 (206) 577-4778 x3203 (Seattle, USA) Check out our upcoming events schedule at www.revolution-computing.com/events =================================== P Please consider the environment before printing this e-mail Cleveland Clinic is ranked one of the top hospitals in America by U.S. News & World Report (2008). Visit us online at http://www.clevelandclinic.org for a complete listing of our services, staff and locations. Confidentiality Note: This message is intended for use\...{{dropped:13}}
1 day later
On Wed, 2009-03-18 at 11:58 -0400, Yu, Changhong wrote:
Dear all, I am totally confused by the following R output, but don't have a clue for it.
a <- 1 - 0.2
a == 0.8
[1] TRUE
a <- 1 - 0.8
a == 0.2
[1] FALSE
Hi Yu, First of all read FAQ 7.31 (Why doesn't R think these numbers are equal?) Second, in this case, use all.equal a <- 1 - 0.8 a == 0.2 [1] FALSE all.equal(a,0.2) [1] TRUE
Bernardo Rangel Tura, M.D,MPH,Ph.D National Institute of Cardiology Brazil