下面是:
new MathContext(precision, RoundingMode.HALF_UP);
看起来是可以工作的。但是以下代码会返回一个错误:
new MathContext(precision, BigDecimal.ROUND_HALF_UP);
错误:
java: no suitable constructor found for MathContext(int,int)
constructor java.math.MathContext.MathContext(java.lang.String) is not applicable
(actual and formal argument lists differ in length)
constructor java.math.MathContext.MathContext(int,java.math.RoundingMode) is not applicable
(actual argument int cannot be converted to java.math.RoundingMode by method invocation conversion)
constructor java.math.MathContext.MathContext(int) is not applicable
(actual and formal argument lists differ in length)
RoundingMode
,而另一个是int
?这两者之间有什么区别?http://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html 实际上并没有解释任何东西。 - user2948708MathContext
是Java数学API的一部分,而RoundingMode
也是如此。BigDecimal
的ROUND_HALF_UP
字段是BigDecimal
自己的实现细节。 - Boris the SpiderRoundingMode
是一个枚举类型。实际上,快速浏览代码就可以告诉你,RoundingMode.valueOf(BigDecimal.ROUND_HALF_UP) == RoundingMode.HALF_UP
。事实上,代码中的注释是:_返回与传统舍入模式对应的RoundingMode对象_(强调是我的)。 - Boris the Spider