当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java BigDecimal divideAndRemainder()用法及代码示例


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

Java中提供了divideAndRemainder方法的两个重载,如下所示:


  • splitAndRemainder(BigDecimal divisor)
  • splitAndRemainder(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()的结果,然后是remainder()的结果。

用法:

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

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

  • divisor以此BigDecimal除以
  • mc类型为MathContext的上下文设置。

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

异常:该方法在以下情况下引发Arithmetic Exception:


  • 如果参数除数为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); 
        } 
    } 
}

相关用法


注:本文由纯净天空筛选整理自Rajnis09大神的英文原创作品 BigDecimal divideAndRemainder() Method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。