ulp()方法语法:
public static double ulp(double do); public static float ulp(float fl);
ulp()方法在java.lang包中可用。
ulp(double do)方法用于返回方法中给定参数的ulp的大小。在此方法中,给定双值参数的ulp是双浮点值与下一个幅度较大的给定自变量double值之间的正距离。
ulp(float fl)方法用于返回方法中给定参数的ulp的大小。在此方法中,给定浮点值参数的ulp是浮点浮点值与给定自变量浮点值之间的正距离,其大小随后更大。
这些方法不会引发异常。
这些是静态方法,可以使用类名进行访问,如果尝试使用类对象访问这些方法,则不会出现任何错误。
参数:
float / double-表示该值表示要返回其ulp的double浮点值。
返回值:
该方法的返回类型为float / double,它返回给定参数的ulp的大小,返回值为float / double类型。
注意:
如果我们通过NaN,则该方法返回相同的值(即NaN)。
如果我们传递无穷大(正数或负数),则该方法将返回正无穷大。
如果传递零(正数或负数),则该方法返回Float.MIN_VALUE / Double.MIN_VALUE。
如果我们传递Float.MAX_VALUE,则该方法将2提升为104的幂;如果我们传递Double.MAX_VALUE,则该方法将2提升为971的幂。
示例
//Java程序演示示例
//signum()StrictMath类的方法
public class Ulp {
public static void main(String[] args) {
//变量声明
double d1 = 0.0;
double d2 = -0.0;
double d3 = 7.0 / 0.0;
double d4 = -7.0 / 0.0;
double d5 = 1285.45;
float f1 = 0.0f;
float f2 = -0.0f;
float f3 = 7.0f / 0.0f;
float f4 = -7.0f / 0.0f;
float f5 = 1285.45f;
System.out.println();
System.out.println("ulp(double d:)");
//显示d1,d2,d3,d4和d5的先前值
System.out.println("d1:" + d1);
System.out.println("d2: " + d2);
System.out.println("d3: " + d3);
System.out.println("d4: " + d4);
System.out.println("d5: " + d5);
//显示f1,f2,f3,f4和d5的先前值
System.out.println("f1: " + f1);
System.out.println("f2: " + f2);
System.out.println("f3: " + f3);
System.out.println("f4: " + f4);
System.out.println("f5: " + f5);
//在这里,我们将得到(Double.MIN_VALUE),因为
//我们正在传递参数(0.0)
System.out.println("StrictMath.ulp(d1): " + StrictMath.ulp(d1));
//在这里,我们将得到(Double.MIN_VALUE),因为
//我们正在传递参数(-0.0)
System.out.println("StrictMath.ulp(d2): " + StrictMath.ulp(d2));
//在这里,我们将得到(Infinity)因为
//我们正在传递参数(7.0 / 0.0)
System.out.println("StrictMath.ulp(d2): " + StrictMath.ulp(d3));
//在这里,我们将得到(Infinity)因为
//我们正在传递参数(-7.0 / 0.0)
System.out.println("StrictMath.ulp(d2): " + StrictMath.ulp(d4));
//在这里,我们将得到(提高2到971的幂),因为
//我们正在传递参数(1285.45)
System.out.println("StrictMath.ulp(d5): " + StrictMath.ulp(d5));
System.out.println();
System.out.println("ulp(float fl:)");
//在这里,我们将得到(Float.MIN_VALUE),因为
//我们正在传递参数(0.0)
System.out.println("StrictMath.ulp(f1): " + StrictMath.ulp(f1));
//在这里,我们将得到(Float.MIN_VALUE),因为
//我们正在传递参数(-0.0)
System.out.println("StrictMath.ulp(f2): " + StrictMath.ulp(f2));
//在这里,我们将得到(Infinity)因为
//我们正在传递参数(7.0 / 0.0)
System.out.println("StrictMath.ulp(f3): " + StrictMath.ulp(f3));
//在这里,我们将得到(Infinity)因为
//我们正在传递参数(-7.0 / 0.0)
System.out.println("StrictMath.ulp(f4): " + StrictMath.ulp(f4));
//在这里,我们将得到(提高2到971的幂),因为
//我们正在传递参数(1285.45)
System.out.println("StrictMath.ulp(f5): " + StrictMath.ulp(f5));
}
}输出结果
ulp(double d:) d1:0.0 d2: -0.0 d3: Infinity d4: -Infinity d5: 1285.45 f1: 0.0 f2: -0.0 f3: Infinity f4: -Infinity f5: 1285.45 StrictMath.ulp(d1): 4.9E-324 StrictMath.ulp(d2): 4.9E-324 StrictMath.ulp(d2): Infinity StrictMath.ulp(d2): Infinity StrictMath.ulp(d5): 2.2737367544323206E-13 ulp(float fl:) StrictMath.ulp(f1): 1.4E-45 StrictMath.ulp(f2): 1.4E-45 StrictMath.ulp(f3): Infinity StrictMath.ulp(f4): Infinity StrictMath.ulp(f5): 1.2207031E-4