Matlab的内置eps
函数[1]可以取一个数值X
并返回“从abs(X)
到下一个更大的浮点数的正距离”精确”。
>> eps(1)
ans =
2.2204e-16
>> eps(single(1))
ans =
1.1921e-07
>> eps(1e6)
ans =
1.1642e-10
>> eps(single(1e6))
ans =
0.0625
等效地,Numpy提供spacing
函数[2]:
In [18]: import numpy as np
In [19]: np.spacing(1)
Out[19]: 2.2204460492503131e-16
In [20]: np.spacing(np.single(1))
Out[20]: 1.1920929e-07
In [21]: np.spacing(1e6)
Out[21]: 1.1641532182693481e-10
In [22]: np.spacing(np.single(1e6))
Out[22]: 0.0625
Java中是否有等效函数(因此像Clojure这样的JVM语言)?
答案 0 :(得分:3)
返回参数的ulp大小。一个
double
值的ulp 是这个浮点值与之间的正距离double
价值接下来幅度更大。请注意,对于非NaN x,ulp(-x) == ulp(x)
此外,还可用于floats。一些background on ULPs。