2013-11-02 44 views
4

以下:BigDecimal.ROUND_HALF_UP和RoundingMode.HALF_UP之間的區別?

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) 
+4

一個是舍入模式「,一個是」BigDecimal「的」int「字段 - 錯誤告訴你。你的問題還有更多嗎? –

+0

爲什麼一個'RoundingMode'和另一個'int'?兩者有什麼區別? http://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html並沒有真正解釋任何東西 – user2948708

+1

因爲'MathContext'是Java數學API的一部分,就像'RoundingMode'一樣。 BigDecimal的'ROUND_HALF_UP'字段是'BigDecimal'自己的實現細節的一部分。 –

回答

2

請注意,常量:

RoundingMode.HALF_UP 
BigDecimal.ROUND_HALF_UP 

意味着絕對根據的Javadoc,並根據源代碼是相同的:

public enum RoundingMode { 
.... 
HALF_UP(BigDecimal.ROUND_HALF_UP), 
.... 
} 
+0

更新:從JDK9開始,BigDecimal.ROUND_HALF_UP現已被棄用... –