使用BigDecimal进行舍入



我一直试图在java中使用bigdecimal进行四舍五入,但遇到了java.lang.AnumericeticException错误,该错误显示非终止小数展开。

有人能解释这个错误的起源吗?因为我对java还很陌生?帮我处理代码?

感谢

protected BigDecimal p;
protected BigDecimal q;
protected BigDecimal d;
protected BigDecimal det;
protected BigDecimal exp;
protected int e;
    this.p = pq.getP();
    this.q = pq.getQ();
    det = ((p.subtract(BigDecimal.ONE)).multiply(q.subtract(BigDecimal.ONE)));
    exp = new BigDecimal(String.valueOf(e));
    d = (det.divide(exp).setScale(2,BigDecimal.ROUND_HALF_UP));

变量"d"是我认为出现错误的地方。

进行除法时需要设置比例。

d = det.divide(exp, 2, BigDecimal.ROUND_HALF_UP);

注意:使用带舍入的double可能更干净,也不容易出错。

exp = new BigDecimal(e); // does the same thing if e is an int

最新更新