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