R语言中为什么> sqrt(2)^2 == 2; 2+sqrt(2)^2 == 2+2 会不同啊,一个是FALSE,一个是TURE
应该是关于tolerance的问题。
(sqrt(2)^2)+3 == 2 +3
## [1] TRUE
(sqrt(2))
## [1] 1.414214
1.414214==(sqrt(2))
## [1] FALSE
(sqrt(2)^2) == 2
## [1] FALSE
(sqrt(2)^2)+1 == 2 +1
## [1] FALSE
(2+sqrt(2)^2) ==( 2+2 )
## [1] TRUE
(sqrt(2)^2)+3 == 2+3
## [1] TRUE
变量储存时有精度差,这里R learning 提到了all.equal函数来解决,在一定的tolerance level (by default,about 1.5e-8)下,可以忽略误差