我有
private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
private static final BigDecimal TEN = new BigDecimal(10);
BigDecimal decimal = new BigDecimal(1050);
我需要写10%才能写
BigDecimal decimalResult = decimal.divide(ONE_HUNDRED).multiply(TEN)//100, 10
但是Intellij IDE说:
'没有舍入模式参数的'BigDecimal.divide()'被调用...
我添加了BigDecimal.ROUND_HALF_UP
和其他所有人,但结果错了。我需要1050/100 = 10.5
,但如果我添加BigDecimal.ROUND_HALF_UP
结果= 11
。
如何正确划分比例参数?
答案 0 :(得分:0)
此示例返回105.0000
public class TestBigDecimal {
static BigDecimal decimal = new BigDecimal(1050).setScale(4, BigDecimal.ROUND_HALF_UP);
static BigDecimal ONE_HUNDRED = new BigDecimal(100);
static BigDecimal TEN = new BigDecimal(10);
public static void main(String[] args)
{
BigDecimal decimalResult = decimal.divide(ONE_HUNDRED).multiply(TEN) ;
System.out.println(decimalResult);
}
}
您应该在创建decimal
变量时调整比例。
答案 1 :(得分:0)
public static double divide(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.divide(b2, 2, RoundingMode.DOWN).doubleValue();
}