我想用一個整數除大整數。我舍入了大整數值(如果它是133.333,那麼四捨五入的值就是133)。下面是我的代碼片段。的恆定大整數除以整數
v1 = v1.setScale(0, RoundingMode.HALF_UP);
int temp = BigDecimal.valueOf(v1.longValue()).divide(constant1);
值爲12是示出的錯誤消息
在類型爲BigDecimal的方法分(小數)是不適用的參數(INT)
任何人都可以幫我做分工嗎?
我想用一個整數除大整數。我舍入了大整數值(如果它是133.333,那麼四捨五入的值就是133)。下面是我的代碼片段。的恆定大整數除以整數
v1 = v1.setScale(0, RoundingMode.HALF_UP);
int temp = BigDecimal.valueOf(v1.longValue()).divide(constant1);
值爲12是示出的錯誤消息
在類型爲BigDecimal的方法分(小數)是不適用的參數(INT)
任何人都可以幫我做分工嗎?
變化
.divide(constant1);
到
.divide(new BigDecimal(constant1));
順便說一句,你爲什麼不只是做類似
int temp = (int) (Math.round(v1.doubleValue())/constant1);
?
我想這...但現在它表明我必須改變因爲想要的結果(顯然)是'int',所以最好在數據類型爲temp的數據類型中使用 –
右邊,所以在行尾添加'.intValue()',然後如果你不想這樣做 – aioobe
'int temp = Math.round(v1.longValue())/ constant1;',或者? –
您應按如下方式編寫代碼:
int temp = BigDecimal.valueOf(v1.longValue())
.divide(BigDecimal.valueOf(constant1)).intValue();
約BigDecimal和BigInteger的事情是,他們大多與原始類型,這些類的實例,而不是工作。操作結果也是這些類的新實例。
另一種說法:我建議使用靜態方法而不是構造函數,因爲通過這樣做,您可能有可能避免創建新對象。使用構造函數可以顯式創建新對象,在這種情況下根本不需要。
我收到這個異常,當我試着這個code10- 19 16:28:42.375:錯誤/ AndroidRuntime(479):java.lang.ArithmeticException:非終止十進制擴展;沒有確切的可表示的十進制結果 –
看看這個問題:http://stackoverflow.com/questions/4591206/non-terminating-decimal-expansion-no-exact-representable-decimal-result,它顯示那裏如何避免通過使用舍入這樣的錯誤。 – Malcolm
int j = ...;
BigDecimal bd = new BigDecimal (j);
我被困在這....請有人告訴我笏做... :( –
更新我的答案。 – aioobe