感谢您的任何建议。
为什么:
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
答案 0 :(得分:1)
由于BigDecimal
不可变,您必须将调用结果分配给setScale()
至c
,
c = c.setScale(2, RoundingMode.HALF_UP);
链接的Javadoc说(部分)返回其标度为的BigDecimal
。
<强> TL;博士强>
它没有修改c
。