java - BigDecimal 带刻度除法

标签 java bigdecimal

我有

private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
    private static final BigDecimal TEN = new BigDecimal(10);

BigDecimal 小数 = new BigDecimal(1050); 我需要获得 10% 的写作成果 BigDecimal十进制结果=decimal.divide(ONE_HUNDRED).multiply(TEN)//100, 10

但是 Intellij IDE 说:

'BigDecimal.divide()' called without a rounding mode argument more...

我添加了 BigDecimal.ROUND_HALF_UP 和所有其他内容,但我得到了错误的结果。我需要 1050/100 = 10.5,但如果我添加 BigDecimal.ROUND_HALF_UP 结果 = 11

如何正确地除以比例参数?

最佳答案

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();
}

关于java - BigDecimal 带刻度除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43183245/

相关文章:

java - 大十进制除法

java - BigDecimal.valueOf( double d ) 的性能

java - 是否可以用堆实现最小优先级队列,或者是否需要二叉堆?

java - 带有空格的字符串无法正确解析

java - 在 Java 中读取文件会抛出 `NullPointerException`

java - 为什么不可变类提供修改器?

java - 在 Java 中将除法的 double 结果转换为 int

Java - 在主方法和绘图方法之间传递变量时遇到问题

java - 在 GWT 中将字符串转换为 BigDecimal

java - BigDecimal.divide(...) - 适合具有非终止扩展的商的比例