BigDecimal除法不取整

时间:2019-06-08 04:30:10

标签: java

我有这段代码将BigDecimal除以1000000。

我尝试过RoundingMode.DOWN,BigDecimal.ROUND_DOWN。

public static BigDecimal divide1000000(BigDecimal aBigDecimal) {
        if(aBigDecimal!=null)
            return aBigDecimal.divide(new BigDecimal("1000000"));

        return aBigDecimal;
}

BigDecimal B= new BigDecimal("99999999999999999"); /*99,999,999,999,999,999*/
BigDecimal a=divide1000000(B);

  

结果a = 100000000000(100,000,000,000)

如果我想要

  

结果a = 99999999999(99,999,999,999)

如何更改divide1000000?

1 个答案:

答案 0 :(得分:0)

我认为您要寻找的RoundingMode是ROUND_DOWN或ROUND_FLOOR。您可以使用其中任何一个。这都是:-

BigDecimal a= new BigDecimal("99999999999.999999");
BigDecimal b= new BigDecimal(0);
b = a.setScale(0, BigDecimal.ROUND_UP); // 100000000000
b = a.setScale(0, BigDecimal.ROUND_CEILING); // 100000000000
b = a.setScale(0, BigDecimal.ROUND_DOWN); // 99999999999
b = a.setScale(0, BigDecimal.ROUND_FLOOR); // 99999999999
b = a.setScale(0, BigDecimal.ROUND_HALF_DOWN); // 100000000000
b = a.setScale(0, BigDecimal.ROUND_HALF_EVEN); // 100000000000
b = a.setScale(0, BigDecimal.ROUND_HALF_UP); // 100000000000

您可以使用ROUND_DOWN或ROUND_FLOOR。