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"
众所周知,当比较两个实数时,最好使用较小的容差来避免数值问题。
我正在寻找一个示例,当我们比较一个数字 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"