Java 的 BigDecimal setScale

Java's BigDecimal setScale

感谢任何建议。

这是为什么:

import java.math.*;

public class bdt {

    public static void main (String [] args) {

        BigDecimal a = new BigDecimal ("1.0");
        BigDecimal b = new BigDecimal ("3.0");
        BigDecimal c = new BigDecimal ("0.0");

        c = a.divide (b,MathContext.DECIMAL128);
        c.setScale (2,RoundingMode.HALF_UP);
        System.out.println (a.toString ());
        System.out.println (b.toString ());
        System.out.println (c);

    }

}

产生这个:

1.0
3.0
0.3333333333333333333333333333

而不是:

1.0
3.0
0.33

因为 BigDecimal 不可变的 你必须将 setScale() 的调用结果分配给 c,

c = c.setScale(2, RoundingMode.HALF_UP);

链接的 Javadoc 说(部分)Returns 一个 BigDecimal 其比例为指定值 .

tl;博士 它不会就地修改 c