2011-10-19 96 views
3

我想用一個整數除大整數。我舍入了大整數值(如果它是133.333,那麼四捨五入的值就是133)。下面是我的代碼片段。的恆定大整數除以整數

v1 = v1.setScale(0, RoundingMode.HALF_UP); 
int temp = BigDecimal.valueOf(v1.longValue()).divide(constant1); 

值爲12是示出的錯誤消息

在類型爲BigDecimal的方法分(小數)是不適用的參數(INT)

任何人都可以幫我做分工嗎?

+0

我被困在這....請有人告訴我笏做... :( –

+0

更新我的答案。 – aioobe

回答

4

變化

.divide(constant1); 

.divide(new BigDecimal(constant1)); 

順便說一句,你爲什麼不只是做類似

int temp = (int) (Math.round(v1.doubleValue())/constant1); 

+0

我想這...但現在它表明我必須改變因爲想要的結果(顯然)是'int',所以最好在數據類型爲temp的數據類型中使用 –

+0

右邊,所以在行尾添加'.intValue()',然後如果你不想這樣做 – aioobe

+0

'int temp = Math.round(v1.longValue())/ constant1;',或者? –

0

您應按如下方式編寫代碼:

int temp = BigDecimal.valueOf(v1.longValue()) 
     .divide(BigDecimal.valueOf(constant1)).intValue(); 

約BigDecimal和BigInteger的事情是,他們大多與原始類型,這些類的實例,而不是工作。操作結果也是這些類的新實例。

另一種說法:我建議使用靜態方法而不是構造函數,因爲通過這樣做,您可能有可能避免創建新對象。使用構造函數可以顯式創建新對象,在這種情況下根本不需要。

+0

我收到這個異常,當我試着這個code10- 19 16:28:42.375:錯誤/ AndroidRuntime(479):java.lang.ArithmeticException:非終止十進制擴展;沒有確切的可表示的十進制結果 –

+0

看看這個問題:http://stackoverflow.com/questions/4591206/non-terminating-decimal-expansion-no-exact-representable-decimal-result,它顯示那裏如何避免通過使用舍入這樣的錯誤。 – Malcolm

0
int j = ...; 
BigDecimal bd = new BigDecimal (j);