R语言中运算的优先级,函数的调用顺序

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)下,可以忽略误差

img


img