R中的数值问题

时间:2018-08-01 08:50:21

标签: r floating-point comparison-operators

众所周知,当比较两个实数时,以较小的公差工作以避免数值问题总是更好。

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

round(x, d) == x

例如,如果x=0.1234,则d=4。但是,这不是一个好例子,因为当您评估round(x, d) == x返回TRUE时。我正在寻找x的值,其中round(x, d) == x变成FALSE

1 个答案:

答案 0 :(得分:3)

不清楚如何定义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"