The method sqrt(BigInteger x, RoundingMode mode) of Guava’s BigIntegerMath class returns the square root of x, rounded with the specified rounding mode.
Syntax:
public static BigInteger sqrt(BigInteger x, RoundingMode mode)
Parameters: This method takes the following parameters:
- x : The BigInteger number whose square-root is to be found.
- mode : The rounding mode for calculating the square-root.
Return Value: This method returns the square root of x, rounded with the specified rounding mode.
Exceptions: This method throws following exceptions:
- IllegalArgumentException: if x < 0.
- ArithmeticException: if mode is RoundingMode.UNNECESSARY and sqrt(x) is not an integer.
Enum RoundingMode
| Enum Constant | Description |
|---|---|
| CEILING | Rounding mode to round towards positive infinity. |
| DOWN | Rounding mode to round towards zero. |
| FLOOR | Rounding mode to round towards negative infinity. |
| HALF_DOWN | Rounding mode to round towards “nearest neighbor” unless both neighbors are equidistant, in which case round down. |
| HALF_EVEN | Rounding mode to round towards the “nearest neighbor” unless both neighbors are equidistant, in which case, round towards the even neighbor. |
| HALF_UP | Rounding mode to round towards “nearest neighbor” unless both neighbors are equidistant, in which case round up. |
| UNNECESSARY | Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary. |
| UP | Rounding mode to round away from zero. |
Below examples illustrates the BigIntegerMath.sqrt() method:
Example 1:
// Java code to show implementation of// sqrt(BigInteger x, RoundingMode mode) method// of Guava's BigIntegerMath class import java.math.*;import com.google.common.math.BigIntegerMath; class GFG { // Driver code public static void main(String args[]) { BigInteger x1 = BigInteger.valueOf(226); // Using sqrt(BigInteger x, RoundingMode mode) // method of Guava's BigIntegerMath class // The RoundingMode HALF_EVEN rounds towards // the nearest neighbor unless both neighbors // are equidistant, in which case, round towards // the even neighbor. BigInteger ans1 = BigIntegerMath .sqrt(x1, RoundingMode.HALF_EVEN); System.out.println("Square root of " + x1 + "with HALF_EVEN rounding mode is: " + ans1); BigInteger x2 = BigInteger.valueOf(154); // Using sqrt(BigInteger x, RoundingMode mode) // method of Guava's BigIntegerMath class // The RoundingMode FLOOR rounds towards // negative infinity. BigInteger ans2 = BigIntegerMath .sqrt(x2, RoundingMode.FLOOR); System.out.println("Square root of " + x2 + "with FLOOR rounding mode is: " + ans2); }} |
Square root of 226with HALF_EVEN rounding mode is: 15 Square root of 154with FLOOR rounding mode is: 12
Example 2:
// Java code to show implementation of// sqrt(BigInteger x, RoundingMode mode) method// of Guava's BigIntegerMath class import java.math.*;import com.google.common.math.BigIntegerMath; class GFG { // Driver code public static void main(String args[]) { try { BigInteger x1 = BigInteger.valueOf(-65); // Using sqrt(BigInteger x, RoundingMode mode) // method of Guava's BigIntegerMath class // The RoundingMode HALF_EVEN rounds towards // the nearest neighbor unless both neighbors // are equidistant, in which case, round towards // the even neighbor. BigInteger ans1 = BigIntegerMath .sqrt(x1, RoundingMode.HALF_EVEN); // This should throw "IllegalArgumentException" // as x1 < 0 } catch (Exception e) { System.out.println("Exception: " + e); } }} |
Exception: java.lang.IllegalArgumentException: x (-65) must be >= 0
