Java StrictMath scalb()方法与示例

StrictMath类scalb()方法

语法:

    public static double scalb(double do , int sf);
    public static float scalb(float fl , int sf);
  • scalb(double do,int sf)方法用于将do * 2提升为sf的幂,该整数作为方法中传递的参数进行舍入。

  • scalb(double do,int sf)

    • 如果指数位于Double.MIN_EXPONENT和Double.MAX_EXPONENT之间,则在这种情况下,将精确计算结果。

    • 如果指数答案大于Double.MAX_EXPONENT,则返回无穷大。

    • scalb(float fl,int sf)方法用于返回fl * 2,该值被提升为sf的幂,该整数作为方法中传递的参数进行舍入。

  • scalb(float fl,int sf)

    • 如果指数介于Float.MIN_EXPONENT和Float.MAX_EXPONENT之间,那么在这种情况下,结果将被精确计算。

    • 如果指数答案大于Float.MAX_EXPONENT,则返回无穷大。

  • 这些方法不会引发异常。

  • 这些是静态方法,可以使用类名进行访问,如果尝试使用类对象访问这些方法,则不会出现任何错误。

参数:

  • 在第一种情况下,scalb(double do,int sf) -

    • double do-此参数表示要以2的幂进行缩放的双精度数。

    • int sf-此参数表示整数类型2的幂次幂,用于缩放do。

  • 在第二种情况下,scalb(float fl,int sf) -

    • float fl-此参数表示以2的幂进行缩放的float类型号。

    • int sf-此参数表示2的整数次方,用于缩放fl。

返回值:

在第一种情况下,此方法的返回类型为double,它会将do * 2提升为sf的幂。

在第二种情况下,此方法的返回类型为float,它将返回提升为sf的fl * 2。

示例

//Java程序演示示例 
//StrictMath类的scalb()方法的说明

public class Scalb {
    public static void main(String[] args) {
        //变量声明
        float f1 = -0.0f;
        float f2 = -7.0f / 0.0f;
        float f3 = 20.0f;
        double d1 = -0.0;
        double d2 = -7.0 / 0.0;
        double d3 = 20.0;
        int i = 6;

        System.out.println("scalb(double do, int i): ");

        //在这里,我们得到(-0.0),因为我们传递
        //参数值为(-0.0f,6)
        System.out.println("StrictMath.scalb( f1,i): " + StrictMath.scalb(f1, i));

        //在这里,我们将获得(-Infinity)并传递参数 
        //其值为(-Infinity,6)
        System.out.println("StrictMath.scalb( f2,i): " + StrictMath.scalb(f2, i));

        //在这里,我们将得到(20.0f * 2升为6的幂),然后
        //我们正在传递参数,其值为(20.0f,6)
        System.out.println("StrictMath.scalb( f3,i): " + StrictMath.scalb(f3, i));

        System.out.println();
        System.out.println("scalb(double do, int i): ");

        //在这里,我们得到(-0.0),因为我们传递 
        //参数的值为(-0.0,6)
        System.out.println("StrictMath.scalb( d1,i): " + StrictMath.scalb(d1, i));

        //在这里,我们将获得(-Infinity)并传递参数 
        //其值为(-Infinity,6)
        System.out.println("StrictMath.scalb( d2,i): " + StrictMath.scalb(d2, i));

        //在这里,我们将得到(20.0 * 2升为6.0的幂),然后
        //我们正在传递参数,其值为(20.0,6)
        System.out.println("StrictMath.scalb( d3,i): " + StrictMath.scalb(d3, i));
    }
}

输出结果

scalb(double do, int i): 
StrictMath.scalb( f1,i): -0.0
StrictMath.scalb( f2,i): -Infinity
StrictMath.scalb( f3,i): 1280.0

scalb(double do, int i): 
StrictMath.scalb( d1,i): -0.0
StrictMath.scalb( d2,i): -Infinity
StrictMath.scalb( d3,i): 1280.0