A strange arithmetic error in R (maybe a bug)
There is no bug, of course, this is a common floating point arithmetic misunderstanding.
print(2.01, digits = 20)
[1] 2.0099999999999997868 Please search for "What every scientist should know about floating-point arithmetic" and you'll hopefully understand what the "bug" is. Hth, Adrian
On Sat, Feb 18, 2017 at 6:18 AM, T. Zhang <tz05 at me.com> wrote:
Hello, Today I happened to notice a strange error in R. If you type (2.01-0.06)==1.95, output from R is ?FALSE?, which is wrong. But if you type (1.01-0.06)==0.95, output is ?TRUE?, which is correct. I tested this in two systems: R 3.3.2 in my iMac and R 3.2.0 on my school?s Linux server. Both gave same outputs. As shown in the following:
2.01-0.06
[1] 1.95
(2.01-0.06)==1.95 # should be TRUE; output is wrong
[1] FALSE
1.01-0.06
[1] 0.95
(1.01-0.06)==0.95 # should be TRUE; output is correct
[1] TRUE
(2.01-0.06)>1.95 # should be FALSE; output is correct
[1] FALSE
(2.01-0.06)<1.95 # should be FALSE; output is wrong
[1] TRUE Similar errors could be found with simple alterations of the above inputs, such as:
5.533-5.412
[1] 0.121
(5.533-5.412)==0.121 # should be TRUE; output is wrong
[1] FALSE
2.533-2.412
[1] 0.121
(2.533-2.412)==0.121 # should be TRUE; output is correct
[1] TRUE Could any of you test whether you have same outputs as mine? And does anyone know what is wrong with these? My guess is that R has a bug in processing double numbers. Thanks! TZ
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
Adrian Dusa University of Bucharest Romanian Social Data Archive Soseaua Panduri nr. 90-92 050663 Bucharest sector 5 Romania [[alternative HTML version deleted]]