Java BigDecimal divideToIntegralValue()方法及示例
java.math.BigDecimal .divideToIntegralValue(BigDecimal divisor) 用于计算两个BigDecimals (this / divisor) 的商的整数部分,并将其向下舍入。结果的首选比例是(this.scale() – divisor.scale() )。该方法对当前的BigDecimal进行操作,该方法被调用时,BigDecimal作为参数被传递。在Java中,有两个divideToIntegralValue方法的重载,如下所示。
- divideToIntegralValue(BigDecimal divisor)
- divideToIntegralValue(BigDecimal divisor, MathContext mc)
divideToIntegralValue(BigDecimal divisor)
语法
public BigDecimal divideToIntegralValue(BigDecimal divisor)
参数: 该方法接受一个 除数 参数,该BigDecimal将被除掉。
返回值: 该方法返回一个BigDecimal,该BigDecimal持有结果的整数部分 (本数/除数)。
异常: 除数 参数不能为 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 divisor, MathContext mc)
由于精确商的整数部分不取决于四舍五入模式,所以四舍五入模式不影响此方法返回的值。结果的首选比例是(this.scale() – divisor.scale() )。
语法
public BigDecimal divideToIntegralValue(BigDecimal divisor,
MathContext mc)
参数: 该方法接受一个 被除数 的参数和一个 MathContext 类型的参数 mc ,用于设置上下文。 返回值: 该方法返回一个BigDecimal,其中包含结果的整数部分 (this / divisor)。
异常: 该方法在下列情况下会抛出算术异常。
- 参数 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/math/BigDecimal.html#divideToIntegralValue(java.math.BigDecimal)