【发布时间】:2023-03-26 00:45:01
【问题描述】:
众所周知,在比较两个实数时,最好使用较小的容差以避免出现数值问题。
我正在寻找一个示例,当我们比较具有d 小数位数的数字x 时,以下表达式返回FALSE:
round(x, d) == x
例如,如果 x=0.1234 则 d=4。但是,这不是一个很好的示例,因为当您评估 round(x, d) == x 时会返回 TRUE。我正在寻找x 的值,其中round(x, d) == x 变为FALSE。
【问题讨论】:
-
不确定您的意思。
round(1.1234, 2) == 1.1234返回FALSE -
@Ronak 我在 R 代码中看到它使用
abs(x - round(x, d)) < eps。所以想想x == round(x, d)会失败的情况。 -
@RonakShah 他/她的意思是
round(x,d),其中d是点后的位数。round(1.1234, d) == 1.1234为d=4返回TRUE。 -
@RonakShah 只有当你输入一个不能精确表示的数字(很难做到)或者你计算出这样一个数字(相当容易)时,它才会失败。
-
@RonakShah 在您的回答中,最后一次迭代变为
FALSE。因此,x == round(x, d)失败的情况很少见。
标签: r floating-point comparison-operators