具有十进制值的 BigDecimal?

BigDecimal with decimates value?

我正在尝试使用 BigDecimal 对一个值进行除法,当这个值是 BigDecimal 的四分之一时,我不会这样做。我需要显示抽取值。例如,如果我除 10 / 3 = 3.33333,我需要显示 3.33 但确实显示 3.00

我该怎么做?

//Result-> 10 / 2 = 3,3333333

BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_UP);

//output = 3
//I need output = 3.33

ints初始化的BigDecimals的scale0,意思是舍入运算取整。以您的示例为例,除法将 up 舍入为 4.

将第一个BigDecimal的比例设置为2,通过除法保留。同时将舍入模式设置为"down".

BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);

打印 results 现在输出 3.33

您也可以使用 RoundingMode 枚举作为舍入常量的替代品。此外,您可以使用 ROUND_HALF_DOWNROUND_HALF_UPROUND_HALF_EVEN(或它们的 RoundingMode 等价物)。

您可以使用具有适当小数位数的字符串来隐式设置比例。

BigDecimal v1 = new BigDecimal("10.00");  // scale of 2

尝试 compilerun 这个 java class, 它如你所愿:

import java.math.*;
class decimal {
    public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2,2,BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}
}

输出:3.33

你想要两位小数,这就是我设置 scale=2

的原因

尝试为 BigDecimal 添加小数位数,如下所示:

public class User {

    public static void main(String[] args) {

        BigDecimal result = new BigDecimal(0);
        BigDecimal v1 = new BigDecimal(10).setScale(2);
        BigDecimal v2 = new BigDecimal(3);
        result = v1.divide(v2, BigDecimal.ROUND_DOWN);

        System.out.println(result);

    }
}