有人可以解释Math.ulp(双)方法吗?

时间:2015-06-03 18:19:45

标签: java math

我无法在网上找到任何我认不知道的信息。我想知道是否有人知道我可以调查哪些好的资源来帮助我了解这个功能究竟是做什么的?

从我收集的内容来看,我很确定这是错误的,或者至少不完全正确,是否给定一个浮点,它确定了自身与序列中下一个数字之间的距离?似乎与按位数表示数字有关,但我读过的消息来源从未明确说过任何相关内容。

2 个答案:

答案 0 :(得分:6)

http://matlabgeeks.com/tips-tutorials/floating-point-comparisons-in-matlab/

说得很清楚:

  
    

float2bin(A)

         

// ans = 0011111110111001100110011001100110011001100110011001100110 100000

         

float2bin(B)

         

// ans = 0011111110111001100110011001100110011001100110011001100110 011010

  

在此示例中,您可以看到二进制级别的精度差异。 A和B的差异为6 ulps(最后一个单位)

答案 1 :(得分:3)

我相信它显示了您指定的数字与可编码的下一个最大二进制浮点数之间的距离。

由于二进制浮点数覆盖的范围及其精度,并未涵盖任何两个给定实数之间的所有数字,因此看起来这样可以给出您希望编码的数字与实际数字之间的正距离数字将存储为。

来自Wikipedia

  

最小精度单位(ULP)是浮点数之间的间距,即最低有效数字表示的值(如果是1)