Java的BigDecimal setScale

时间:2015-01-24 02:06:52

标签: java bigdecimal

感谢您的任何建议。

为什么:

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

1 个答案:

答案 0 :(得分:1)

由于BigDecimal 不可变,您必须将调用结果分配给setScale()c

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

链接的Javadoc说(部分)返回其标度为BigDecimal

<强> TL;博士 它没有修改c