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

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

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

Java.math.BigDecimal .divide(BigDecimal divisor)用于计算两个 BigDecimal 的(this / divisor)给出。此方法对调用此方法的当前 BigDecimal 执行操作,并将 BigDecimal 作为参数传递。

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

  • 除(BigDecimal 除数)
  • 除(BigDecimal 除数,MathContext mc)
  • 除(BigDecimal 除数,RoundingMode 舍入模式)
  • 除数(BigDecimal 除数,整数刻度,RoundingMode roundingMode)
  • 除数(BigDecimal 除数,整数舍入模式)

注意:Java 9开始不推荐使用方法divide(BigDecimal divisor, int roundingMode)

除(BigDecimal 除数)

(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

参考: Java : Java(Java )

除(BigDecimal 除数,MathContext mc)

此方法用于计算值为(this / divisor)的两个 BigDecimal 的商,并根据上下文设置进行四舍五入。
句法:

public BigDecimal divide(BigDecimal divisor,
                         MathContext mc)

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

  • 这个 BigDecimal 被除以的除数
  • 用于上下文设置的MathContext类型的mc

返回值:此方法返回一个 BigDecimal,它保存结果(this / divisor)并根据需要四舍五入。

异常:如果结果不精确但舍入模式为 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

参考: Java : Java(Java, Java )

除(BigDecimal 除数,RoundingMode 舍入模式)

(this / divisor)给出,其首选比例是 this.scale()。如果需要舍入以生成具有给定比例的结果,则应用特定的舍入模式。
句法:

public BigDecimal divide(BigDecimal divisor,
                         RoundingMode roundingMode)

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

  • 这个 BigDecimal 被除以的除数
  • RoundingMode 类型的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

参考: Java : Java(Java, Java )

除数(BigDecimal 除数,整数刻度,RoundingMode roundingMode)

由指定首选比例的(this / divisor)给出。如果需要舍入以生成具有指定比例的结果,则应用指定的舍入模式。
句法:

public BigDecimal divide(BigDecimal divisor, 
                         int scale, 
                         RoundingMode roundingMode)

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

  • 这个 BigDecimal 被除以的除数
  • RoundingMode 类型的 RoundingMode,它告诉应用哪种入模式
  • scale设置商的比例。

返回值:此方法返回一个 BigDecimal,其中包含结果(this / divisor)
异常:如果 roundingMode 为 UNNECESSARY 并且指定的比例不足以准确表示除法的结果或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 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: Java/javase/12/docs/api/ Java.base/ Java/math/BigDecimal.html#divide(java .math.BigDecimal, int, Java Java.舍入模式)