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
。
感谢任何建议。
这是为什么:
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
。