精度:(1-1e-17)== 1

时间:2014-05-17 09:37:03

标签: r floating-point precision floating-point-precision

R的精度是多少?我可以改变吗?我发现(1-1e-16)==1为FALSE,但(1-1e-17)==1为TRUE。

我试着计算

x = 1e-17
q1 = qnorm(x)
q2 = qnorm(1-x)

理论上q1==-q2,但R的输出是

>  x=1e-17
>  qnorm(x)
[1] -8.493793
>  qnorm(1-x)
[1] Inf

有什么方法可以避免这种差异?

1 个答案:

答案 0 :(得分:4)

浮点精度取决于您的系统。您可以从help(".Machine")获取相关信息。

,例如,double.eps是"最小的正浮点数x,使得1 + x!= 1"。

.Machine$double.eps
#[1] 2.220446e-16

double.neg.eps是"一个小的正浮点数x,使得1 - x!= 1"。

.Machine$double.neg.eps
#[1] 1.110223e-16