我有一個BigDecimal奇怪的問題。new BigDecimal(「0」)NumberFormatException
我有一個分析方法如下:
protected BigDecimal parseBigDecimalFromText(String text) {
Logger.info("parseBigDecimalFromText("+text+")");
return new BigDecimal(text);
}
現在,當我跑我的測試代碼正常工作。
@Test
public void parseBigDecimalFromZero() {
Logger.createLogger();
// given
String text = "0";
// when
BigDecimal bigDecimal = basicPage.parseBigDecimalFromText(text);
// then
Assert.assertEquals(new BigDecimal("0"), bigDecimal);
}
但是,當我執行我的應用程序正是通過相同的字符串「0」,我得到了一個「java.lang.NumberFormatException」
以下是日誌:
2014-11-05 23:21:33.142: INFO - parseBigDecimalFromText(0)
2014-11-05 23:21:33.142: SEVERE - null
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:470)
at java.math.BigDecimal.<init>(BigDecimal.java:739)
at com.aa.travian.pages.BasicPage.parseBigDecimalFromText(BasicPage.java:121)
我知道,當我的應用程序啓動我設置特定區域設置:
Locale locale = getConfig().getLocale();
ResourceBundle = ResourceBundle.getBundle("translations", locale);
但我不明白這應該如何reak我的parseBigDecimalFromText方法。
以下是我的Java版本:
java -versionjava version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
任何想法,這裏發生了什麼? 望着BigDecimal的源代碼,它看起來像它屬於在解析指數:
// exponent expected
if ((c != 'e') && (c != 'E'))
throw new NumberFormatException();
預先感謝您的時間。
如果手動'新的BigDecimal( 「0」)'型,會發生什麼? – Dici 2014-11-05 23:47:16
確定'0'後面沒有空格嗎? – 2014-11-06 00:07:03