2016-01-25 42 views
-1

這裏是我的代碼:Java - 當我嘗試將9999999999999變成BigDecimal時,爲什麼會變爲空?

String value = "9999999999999"; 
Character decimalFormat = '.'; 
DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 
symbols.setDecimalSeparator(decimalFormat); 
symbols.setGroupingSeparator(decimalFormat.equals('.') ? ',' : '.'); 
DecimalFormat format = new DecimalFormat(); 
format.setDecimalFormatSymbols(symbols); 
format.setParseBigDecimal(true); 
ParsePosition parsePosition = new ParsePosition(0); 
BigDecimal result = (BigDecimal) format.parse(value, parsePosition); 

當我通過9999999999999或999999999999.999999999作爲「價值」爲代碼我得到空。爲什麼?

+0

decimalFormat的值是什麼? – hasnae

+0

你在哪裏得到空?如果你打印出結果對象,它不會給你正確的值嗎? – Bifz

+0

我得到:result = null – goe

回答

2

1它完美,即使你把數字字母裏面,你開始時。

2除非您的字符串以字母開頭:X999爲空,或無效。

3A所以我懷疑有另一個代碼修改值。

3B不要使用正常的庫(進口java.text中...)

4 Last方法:跟蹤每個呼叫。

什麼呢解析:

的方法試圖通過POS給定的索引來解析文本出發。如果解析成功,則pos的索引在使用的最後一個字符(解析不一定使用到字符串末尾的所有字符)之後更新爲索引,並返回解析的數字。已更新的pos可用於指示下次調用此方法的起點。如果發生錯誤,則pos的索引不會更改,pos的錯誤索引將設置爲發生錯誤的字符的索引,並返回null。

相關問題