Java BigDecimal divideAndRemainder()方法及示例

Java BigDecimal divideAndRemainder()方法及示例

java.math.BigDecimal .divideAndRemainder(BigDecimal divisor)是用来计算两个BigDecimals的商和余数。如果同时需要整数的商和余数,那么这个方法比分别使用 divideToIntegralValue()remainder() 方法要快,因为除法只需要进行一次。该方法对当前的BigDecimal进行运算,该方法被调用时,BigDecimal作为参数被传递。

在Java中有两个divideAndRemainder方法的重载,如下所示。

  • divideAndRemainder(BigDecimal divisor)
  • div ideAndRemainder(BigDecimal divisor, MathContext mc)

divideAndRemainder(BigDecimal divisor)

语法

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

参考资料:https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigDecimal.html#divideToIntegralValue(java.math.BigDecimal)。

divideAndRemainder(BigDecimal divisor, MathContext mc)

此方法用于计算商,商是divideToIntegralValue()的结果,然后是两个操作数的余数()的结果,计算时根据上下文设置进行舍入。

语法

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

参数: 该方法接受两个参数。

  • divisor,这个BigDecimal要被除掉。
  • mc类型的MathContext,用于设置上下文。

返回值: 该方法返回一个大小为2的BigDecimal数组,该数组包含商和余数。

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

  • 如果参数除数是0 .
  • 如果结果是不精确的,但是四舍五入的模式是UNNECESSARY或者mc.precision>0,并且this.divideToIntgralValue(divisor)的结果需要一个超过mc.precision的数字。

以下程序用来说明BigDecimal的divideAndRemainder()方法。

程序1 :

// 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

**参考: ** https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigDecimal.html#divideAndRemainder(java.math.BigDecimal, java.math.MathContext)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程