R中的数值问题

Numerical issues in R

众所周知,当比较两个实数时,最好使用较小的容差来避免数值问题。

我正在寻找一个示例,当我们比较一个数字 x 具有 d 小数位数 returns FALSE 时,以下表达式:

round(x, d) == x

例如,如果 x=0.1234,则 d=4。但是,当您计算 round(x, d) == x returns TRUE 时,这不是一个很好的例子。我正在寻找 x 的值,其中 round(x, d) == x 变为 FALSE

不清楚您如何定义 d。这里我假设它是基于精确代数定义的。

for (i in 1:20) print(1/(8 * 10^i) == round(1/(8 * 10^i), 3 + i))
sprintf("%.50f", 1/8e20)
#[1] "0.00000000000000000000124999999999999993158684291616"