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
有什么方法可以避免这种差异?
答案 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