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

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

Java中的 BigDecimal divideAndRemainder() 方法及示例

Java.math.BigDecimal .divideAndRemainder(BigDecimal divisor)用于计算两个 BigDecimal 的余数。如果同时需要整数商和余数,则此方法比单独使用divideToIntegralValue()剩余()方法更快,因为除法只需要执行一次。此方法对调用此方法的当前 BigDecimal 执行操作,并将 BigDecimal 作为参数传递。

Java中有两个可用的divideAndRemainder方法重载,如下所示:

  • divideAndRemainder(BigDecimal 除数)
  • divideAndRemainder(BigDecimal 除数,MathContext mc)

divideAndRemainder(BigDecimal 除数)

句法:

public BigDecimal[] divideAndRemainder(BigDecimal divisor)

参数:此方法接受参数除数,此 BigDecimal 将除以该除数以获得余数和商。
返回值:此方法返回一个大小为 2 的 BigDecimal 数组,其中包含余数
异常:参数除数不能为0 ,否则抛出算术异常。

下面的程序用于说明 BigDecimal 的 divideAndRemainder() 方法。

// Java program to demonstrate
// divideAndRemainder() method of BigDecimal
  
import java.math.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // BigDecimal object to store the result
        BigDecimal res[];
  
        // For user input
        // Use Scanner or BufferedReader
  
        // Two objects of String created
        // Holds the values
        String input1
            = "456865265569";
        String input2
            = "65245";
  
        // Convert the string input to BigDecimal
        BigDecimal a
            = new BigDecimal(input1);
        BigDecimal divisor
            = new BigDecimal(input2);
  
        // Using divideAndRemainder() method
        res = a.divideAndRemainder(divisor);
  
        // Display the result in BigDecimal
        System.out.println("Quotient = " + res[0]
                           + "\nRemainder = " + res[1]);
    }
}
输出:
Quotient = 7002303
Remainder = 6334

参考: Java : Java(Java )

divideAndRemainder(BigDecimal 除数,MathContext mc)

此方法用于计算除法积分值()的结果,然后是余数()根据上下文设置计算的两个操作数的结果的商。

句法:

public BigDecimal[] divideAndRemainder(BigDecimal divisor, 
                                       MathContext mc)

参数:此方法接受两个参数:

  • 这个 BigDecimal 被除以的除数
  • 用于上下文设置的MathContext类型的mc

返回值:此方法返回一个大小为 2 的 BigDecimal 数组,其中包含余数

异常:该方法在以下情况下抛出算术异常:

  • 如果参数除数0
  • 如果结果不精确但舍入模式为UNNECESSARYmc.precision > 0并且 this.divideToIntgralValue(divisor) 的结果需要超过 mc.precision 位数的精度。

下面的程序用于说明 BigDecimal 的 divideAndRemainder() 方法。
方案一:

// Java program to demonstrate
// divideAndRemainder() method of BigDecimal
  
import java.math.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // BigDecimal object to store the result
        BigDecimal res[];
  
        // For user input
        // Use Scanner or BufferedReader
  
        // Two objects of String created
        // Holds the values
        String input1
            = "4568652655";
        String input2
            = "2562";
  
        // Convert the string input to BigDecimal
        BigDecimal a
            = new BigDecimal(input1);
        BigDecimal divisor
            = new BigDecimal(input2);
  
        // Set precision to 10
        MathContext mc
            = new MathContext(10);
  
        try {
            // Using divideAndRemainder() method
            res = a.divideAndRemainder(divisor, mc);
  
            // Display the result in BigDecimal
            System.out.println("Quotient = " + res[0]
                               + "\nRemainder = " + res[1]);
        }
        catch (Exception e) {
  
            System.out.println(e);
        }
    }
}
输出:
Quotient = 1783236
Remainder = 2023

程序 2:程序显示方法 divideAndRemainder() 引发的异常。

// Java program to demonstrate
// divideAndRemainder() method of BigDecimal
  
import java.math.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // BigDecimal object to store the result
        BigDecimal res[];
  
        // For user input
        // Use Scanner or BufferedReader
  
        // Two objects of String created
        // Holds the values
        String input1
            = "4568652655";
        String input2
            = "2562";
  
        // Convert the string input to BigDecimal
        BigDecimal a
            = new BigDecimal(input1);
        BigDecimal divisor
            = new BigDecimal(input2);
  
        // Set precision to 5
        MathContext mc
            = new MathContext(5);
  
        try {
            // Using divideAndRemainder() method
            res = a.divideAndRemainder(divisor, mc);
  
            // Display the result in BigDecimal
            System.out.println("Quotient = " + res[0]
                               + "\nRemainder = "
                               + res[1]);
        }
        catch (Exception e) {
  
            System.out.println(e);
        }
    }
}
输出:
java.lang.ArithmeticException: Division impossible

参考: Java : Java(Java, Java )