为什么有一种BigDecimal.setScale()
方法可以将小数设置为某个值而没有MathContext.setScale()
方法,但只有构造函数MathContext(precision)
或其他方式,为什么没有BigDecimal.setPrecision()
方法?
编辑:没有方法MathContext.setPrecision()
,只有构造函数MathContext(precision)
。编辑了文本。对此感到抱歉。
EDIT2:我只是想了解为什么有两种方法可以接近比例/精度设置。似乎没有真正的理由让他们中的两个关于 Richard Sitze 的回答。
看这个例子,它清楚地表明你真的可以在精确和规模上得到奇怪的结果:
MathContext mc = new MathContext(2);
BigDecimal test = new BigDecimal("100.234", mc);
System.out.println("Scale: " + test.scale() + ", value: " + test);
test.setScale(6);
System.out.println("Scale: " + test.scale() + ", value: " + test);
test = test.add(new BigDecimal("100"));
System.out.println("Scale: " + test.scale() + ", value: " + test);
结果是:
Scale: -1, value: 1.0E+2
Scale: -1, value: 1.0E+2
Scale: 0, value: 200
关于设置的结果是正确的,但是当我将比例设置为 6 时,我预计会出现警告/提示/异常,说明精度设置不允许比例为 6。