我对数学不是特别擅长,并且正在尝试理解一些R代码。有一个名为“ compareforequality”的函数,如下所示:
compareforequality <- function(val1, val2, epsilon)
{
val1 = as.numeric(val1);
val2 = as.numeric(val2);
equal = val1 > (val2 - epsilon) & val1 < val2 + epsilon;
equal
}
其中val1和val2是表示时间点的数字向量(通常是-10到1000之间的整数,用于标识时间序列中的天),而epsilon设置为1e-10。我可以看到,如果值相同/不同,它将返回true / false,但是这样的函数的用途是什么,而不是使用same()一样。 epsilon的值对比较有什么影响?
谢谢
答案 0 :(得分:1)
重点不是要使它们完全相等,而是要进行粗略的相等比较,例如“ val1
在epsilon
的{{1}}之内。”
诸如此类的有用性的经典示例可能是浮点数,其中(例如)val2
,但是0.1 + 0.2 != 0.3
在0.1 + 0.2
的{{1}}之内一些小的epsilon
,就足够了。