Java.lang.Math.scalb() Method


The java.lang.Math.scalb(double d,int scaleFactor) returns d x 2scaleFactor rounded as if performed by a single correctly rounded floating-point multiply to a member of the double value set. See the Java Language Specification for a discussion of floating-point value sets. If the exponent of the result is between Double.MIN_EXPONENT and Double.MAX_EXPONENT, the answer is calculated exactly. If the exponent of the result would be larger than Double.MAX_EXPONENT, an infinity is returned. Note that if the result is subnormal, precision may be lost; that is, when scalb(x, n) is subnormal, scalb(scalb(x, n), -n) may not equal x. When the result is non-NaN, the result has the same sign as d.

  • If the first argument is NaN, NaN is returned.

  • If the first argument is infinite, then an infinity of the same sign is returned.

  • If the first argument is zero, then a zero of the same sign is returned.


Following is the declaration for java.lang.Math.scalb() method

public static double scalb(double d, int scaleFactor)


  • d − number to be scaled by a power of two.

  • scaleFactor − power of 2 used to scale d

Return Value

This method returns d x 2scaleFactor




The following example shows the usage of lang.Math.scalb() method.

package com.tutorialspoint;

import java.lang.*;

public class MathDemo {

   public static void main(String[] args) {

      // get a x to be raised
      double x = 50.14;
      int y = 4;

      // calculate x multiplied by 2 raised in y
      System.out.println("Math.scalb(" + x + "," + y + ")=" + Math.scalb(x, y));

Let us compile and run the above program, this will produce the following result −

Math.scalb(50.14, 4)=802.24