Java Math.ulp() 方法

java.lang.Math.ulp() 返回参数的ulp的大小。ulp是最后一个单位。float或double值的ulp是给定值与大小较大的下一个值之间的正距离。

1 语法

public static double ulp(double x)  
public static float ulp(float x)  

2 参数

x :要返回其ulp的浮点值  

3 返回值

它返回参数ulp的大小。  

  • 如果参数为正值或负值double或float值,则此方法将返回输出。
  • 如果参数为正Infinity或负Infinity,则此方法将返回正Infinity。
  • 如果参数为正数或负零,则此方法将返回Double.MIN_VALUE。
  • 如果参数为±Double.MAX_VALUE,则此方法将返回等于2971的结果。
  • 如果参数为±Float.MAX_VALUE,则此方法将返回等于2104的结果。
  • 如果参数为NaN,则此方法将返回NaN。

4 示例1

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo
{
    public static void main(String[] args)
    {
        double a = 8.1;
        // 输入正整数值,输出ulp(a)  
        System.out.println(Math.ulp(a));
    }
}

输出结果为:

1.7763568394002505E-15

5 示例2

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo
{
    public static void main(String[] args)
    {
        double a = -37.1;
        // 输入负double值,输出ulp(-a)== ulp(a)
        System.out.println(Math.ulp(a));
    }
}

输出结果为:

7.105427357601002E-15

6 示例3

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo
{
    public static void main(String[] args)
    {
        float a = -1.0f / 0;
        // 输入负无穷大,输出正无穷大
        System.out.println(Math.ulp(a));
    }
}

输出结果为:

Infinity

7 示例4

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo
{
    public static void main(String[] args)
    {
        double a = 0.0;
        // 输入零,输出Double.MIN_VALUE
        System.out.println(Math.ulp(a));
    }
}

输出结果为:

4.9E-324

8 示例5

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo
{
    public static void main(String[] args)
    {
        double a = Double.MAX_VALUE ;
        // 输入Double.MAX_VALUE,输出2的971的幂 
        System.out.println(Math.ulp(a));
    }
}

输出结果为:

1.9958403095347198E292

9 示例6

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
public class Demo
{
    public static void main(String[] args)
    {
        float a = Float.MAX_VALUE ;
        // 输入Float.MAX_VALUE,输出2的104的幂  
        System.out.println(Math.ulp(a));
    }
}

输出结果为:

2.028241E31

 

热门文章

优秀文章