Java BigDecimal sqrt()方法及示例
java.math.BigDecimal .sqrt(MathContext mc) 是Java SE 9和JDK 9中添加的一个内置函数,它可以返回BigDecimal的平方根值,并根据上下文设置对其应用sqrt()方法进行舍入。
语法
public BigDecimal sqrt(MathContext mc)
参数: 该方法接受一个 MathContext 类型的参数mc,用于上下文设置。
返回值: 该方法根据上下文的设置,返回一个四舍五入的 平方根的近似值 。
异常: 该方法在以下情况下会抛出ArithmeticException。
- 如果BigDecimal数字小于0。
- 如果要求一个精确的结果(Precision = 0),并且没有精确结果的有限小数扩展。
- 如果精确的结果不能符合Precision的位数。
注意:此方法仅从JDK 9开始可用。
下面的程序用来说明BigDecimal的sqrt()方法。
例1:
// Java program to demonstrate sqrt() method
import java.math.*;
public class GFG {
public static void main(String[] args)
{
// Creating a BigDecimal object
BigDecimal a, squareRoot;
a = new BigDecimal("100000000000000000000");
// Set precision to 10
MathContext mc
= new MathContext(10);
// calculate square root of bigDecimal
// using sqrt() method
squareRoot = a.sqrt(mc);
// print result
System.out.println("Square root value of " + a
+ " is " + squareRoot);
}
}
输出。
Square root value of 100000000000000000000 is 1.000000000E+10
例2:显示sqrt()方法抛出的异常。
// Java program to demonstrate sqrt() method
import java.math.*;
class GFG {
public static void main(String[] args)
{
// Creating a BigDecimal object
BigDecimal a, squareRoot;
a = new BigDecimal("-4");
// Set precision to 10
MathContext mc
= new MathContext(10);
// calculate square root of bigDecimal
// using sqrt() method
try {
squareRoot = a.sqrt(mc);
// print result
System.out.println("Square root"
+ " value of " + a
+ " is " + squareRoot);
}
catch (Exception e) {
System.out.println(e);
}
}
}
输出。
java.lang.ArithmeticException: Attempted square root of negative BigDecimal
参考文献 : https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html#sqrt-java.math.MathContext-