Java中的 BigDecimal sqrt() 方法及示例
Java .math.BigDecimal.sqrt(MathContext mc)是在Java SE 9 和 JDK 9中添加的内置函数,它返回 BigDecimal 的平方根的 BigDecimal 值,根据上下文设置在其上应用 sqrt() 方法并进行舍入。
句法:
public BigDecimal sqrt(MathContext mc)
参数:此方法接受类型为MathContext的参数mc用于上下文设置。
返回值:此方法返回平方根的近似值,并根据上下文设置进行舍入。
异常:该方法在以下情况下抛出 ArithmeticException。
- 如果 BigDecimal 数小于零。
- 如果请求精确结果 (Precision = 0) 并且精确结果没有有限的十进制扩展。
- 如果确切的结果不适合精度数字。
注意:此方法仅适用于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-