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

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

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

Java.math.BigDecimal .divideToIntegralValue(BigDecimal divisor)用于计算向下舍入的两个 BigDecimals (this / divisor)的商的整数部分。结果的首选比例是 (this.scale() – divisor.scale())。此方法对调用此方法的当前 BigDecimal 执行操作,并将 BigDecimal 作为参数传递。

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

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

divideToIntegralValue(BigDecimal 除数)

句法:

public BigDecimal divideToIntegralValue(BigDecimal divisor)

参数:此方法接受一个参数除数,此 BigDecimal 将除以该除数。
返回值:此方法返回一个 BigDecimal,其中包含结果的整数部分(this / divisor)
异常:参数除数不能为0 ,否则抛出算术异常。

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

// Java program to demonstrate
// divideToIntegralValue() method of BigDecimal
  
import java.math.BigDecimal;
  
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
            = "31452678569";
        String input2
            = "2468";
  
        // Convert the string input to BigDecimal
        BigDecimal a
            = new BigDecimal(input1);
        BigDecimal divisor
            = new BigDecimal(input2);
  
        // Using divideToIntegralValue() method
        res = a.divideToIntegralValue(divisor);
  
        // Display the result in BigDecimal
        System.out.println(res);
    }
}
输出:
12744197

divideToIntegralValue(BigDecimal 除数,MathContext mc)

由于精确商的整数部分不依赖于舍入模式,因此舍入模式不会影响此方法返回的值。结果的首选比例是 (this.scale() – divisor.scale())。

句法:

public BigDecimal divideToIntegralValue(BigDecimal divisor,
                                        MathContext mc)

参数:此方法接受一个用于除此 BigDecimal 的参数除数和一个用于上下文设置的MathContext类型的参数mc
返回值:此方法返回一个 BigDecimal,其中包含结果的整数部分(this / divisor)
异常:该方法在以下情况下抛出算术异常:

  • 参数除数不得为0
  • 如果mc.precision > 0并且结果需要超过mc.precision位数的精度。

下面的程序用于说明 BigDecimal 的 divideToIntegralValue() 方法。
示例 1:

// Java program to demonstrate
// divideToIntegralValue() 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
            = "24536482";
        String input2
            = "2";
  
        // 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);
  
        // Using divideToIntegralValue() method
        res = a.divideToIntegralValue(divisor, mc);
  
        // Display the result in BigDecimal
        System.out.println(res);
    }
}
输出:
12268241

示例 2:说明在 divideToIntegralValue() 方法中发生异常的程序

// Java program to demonstrate
// divideToIntegralValue() 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
            = "24536482";
        String input2
            = "2";
  
        // 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);
  
        // As the result requires
        // a precision of more than
        // mc.precision digits
        // So Exception occur
        try {
  
            // Using divideToIntegralValue() method
            res = a.divideToIntegralValue(divisor, mc);
  
            // Display the result in BigDecimal
            System.out.println(res);
        }
        catch (ArithmeticException e) {
            System.out.println(e);
        }
    }
}
输出:
java.lang.ArithmeticException: Division impossible

参考: https://docs.oracle.com/en/ Java/javase/12/docs/api/ Java.base/ Java Java.math.BigDecimal)