📜  Java中的 BigDecimal sqrt() 方法及示例

📅  最后修改于: 2022-05-13 01:55:01.994000             🧑  作者: Mango

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-