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)。