2.2e-2就是2.2*10^(-2)的意思,也就是科学计数法。你之所以会产生疑问,是因为在计算机中,浮点数的比较有些麻烦,有时会让你摸不着头脑,比如:
sqrt(2) ^ 2 == 2
##[1] FALSE
sqrt(2) ^ 2 - 2
## [1] 4.440892e-16
同理,
2.2e-2 - 2.2 * 10 ^ (-2)
[1] -3.469447e-18
这实际上是电脑算法产生的细微误差,如果用"=="或者identical(),可以捕捉到这些细微误差,但如果我们需要忽略这些误差的时候,可以用“all.equal()”来避免这些令人尴尬的比较结果,比如:
all.equal(2.2e-2, 2.2 * 10^(-2))
##[1] TRUE