Java BigDecimal divide()方法及示例
java.math.BigDecimal .divide(BigDecimal divisor)用于计算两个BigDecimals的商。商值是由(this / divisor)给出的。该方法对当前的BigDecimal进行运算,该方法被调用时,BigDecimal作为参数被传递。
在Java中,有5个divide方法的重载,如下所示。
- divide(BigDecimal divisor)
- divide(BigDecimal divisor, MathContext mc)
- divide( BigDecimal divisor, RoundingMode roundingMode)
- divide( BigDecimal divisor, int scale, RoundingMode roundingMode)
- divide( BigDecimal divisor, int roundingMode)
注意:从Java 9开始, divide(BigDecimal divisor, int roundingMode) 方法已被废弃。
divide(BigDecimal divisor)
商数由(this / divisor)给出,其首选比例为(this. scale() – divisor. scale() )。
语法
public BigDecimal divide(BigDecimal divisor)
参数: 本方法接受一个参数除数,这个BigDecimal要被除以这个参数来获得商。
返回值: 本方法返回一个BigDecimal,其中包含结果(this / divisor)。
异常: 如果参数除数为0或者精确的商没有一个终止的小数扩展,则会抛出算术异常。
下面的程序是用来说明BigDecimal的divide()方法。
// Java program to demonstrate
// divide() 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
= "204800000";
String input2
= "256";
// Convert the string input to BigDecimal
BigDecimal a
= new BigDecimal(input1);
BigDecimal divisor
= new BigDecimal(input2);
// Using divide() method
res = a.divide(divisor);
// Display the result in BigDecimal
System.out.println(res);
}
}
输出。
800000
参考资料:https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigDecimal.html#divide(java.math.BigDecimal)
divide(BigDecimal divisor, MathContext mc)
此方法用于计算两个BigDecimals的商,其值为(this / divisor),并根据上下文设置进行四舍五入。
语法
public BigDecimal divide(BigDecimal divisor,
MathContext mc)
参数: 该方法接受两个参数。
- divisor,这个BigDecimal要被除掉。
- mc类型的MathContext,用于设置上下文。
返回值: 该方法返回一个BigDecimal,其中包含了结果(本数/除数),并根据需要进行了四舍五入。
异常: 如果结果是不精确的,但是四舍五入的模式是UNNECESSARY或者mc.precision == 0,并且商有一个非终止的小数扩展,该方法会抛出算术异常。
下面的程序用来说明BigDecimal的divide()方法。
// Java program to demonstrate
// divide() 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
= "264";
// 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);
// Using divide() method
res = a.divide(divisor, mc);
// Display the result in BigDecimal
System.out.println(res);
}
}
输出。
92941
参考资料:https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigDecimal.html#divide(java.math.BigDecimal, java.math.MathContext)
divide(BigDecimal divisor, RoundingMode roundingMode)
商是由(this / divisor)给出的,其首选比例是this.scale()。如果需要进行四舍五入以产生符合给定比例的结果,则应用特定的四舍五入模式。
语法
public BigDecimal divide(BigDecimal divisor,
RoundingMode roundingMode)
参数: 该方法接受两个参数。
- divisor,这个BigDecimal要被除以这个除数。
- RoundingMode类型的四舍五入模式,告诉你要应用哪种四舍五入模式。
返回值: 该方法返回一个BigDecimal,其中包含结果(this / divisor)。
异常: 如果roundingMode是UNNECESSARY,并且this.scale()不足以准确表示除法的结果或者Divisor是0,该方法会抛出算术异常。
下面的程序用来说明BigDecimal的divide()方法。
// Java program to demonstrate
// divide() 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
= "2453648454542";
String input2
= "264";
// Convert the string input to BigDecimal
BigDecimal a
= new BigDecimal(input1);
BigDecimal divisor
= new BigDecimal(input2);
// Using divide() method
// Using RoundingMode.CEILING
res = a.divide(divisor, RoundingMode.CEILING);
// Display the result in BigDecimal
System.out.println(res);
}
}
输出。
9294122934
参考资料: https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigDecimal.html#divide(java.math.BigDecimal, java.math.RoundingMode)
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
商数由(this / divisor)给出,其首选比例被指定。如果需要进行四舍五入以产生具有指定比例的结果,将应用指定的四舍五入模式。
语法
public BigDecimal divide(BigDecimal divisor,
int scale,
RoundingMode roundingMode)
参数: 该方法接受三个参数。
- divisor,这个BigDecimal要被除以这个除数。
- RoundingMode类型的四舍五入模式,告诉你要应用哪种四舍五入模式。
- scale,用于设置商的比例。
返回值: 该方法返回一个BigDecimal,该BigDecimal包含结果(本数/除数)。
异常: 如果roundingMode是UNNECESSARY,并且指定的比例不足以准确表示除法的结果,或者除数为0,该方法会抛出算术异常。
下面的程序用来说明BigDecimal的divide()方法。
// Java program to demonstrate
// divide() 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
= "2453648454542";
String input2
= "264";
// Convert the string input to BigDecimal
BigDecimal a
= new BigDecimal(input1);
BigDecimal divisor
= new BigDecimal(input2);
// Using scale = 4
int scale = 4;
// Using divide() method
// Using RoundingMode.CEILING
res = a.divide(divisor, scale,
RoundingMode.CEILING);
// Display the result in BigDecimal
System.out.println(res);
}
}
输出。
9294122933.8713
参考: https: //docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigDecimal.html#divide(java.math.BigDecimal, int, java.math.RoundingMode)。