2017-06-14 56 views
2

在解析該值時,下面的代碼有時我正面臨法國機器中的NumberFormat異常。java.lang.NumberFormatException當在法國機器執行時

double txPower; 
DecimalFormat df = new DecimalFormat("##.##"); 

txPower = txPower + getDeltaP(); 
log.info("txpower value is -- "+txPower); 
txPower = Double.parseDouble(df.format(txPower)); 


protected double getDeltaP() 
{ 
    return isNewChannelAddition ? apaConfig.deltaPadd : apaConfig.deltaPtune; 
} 

日誌:

txpower value is -- -7.9 
java.lang.NumberFormatException: For input string: "-7,9" 

回答

3

我建議使用配置爲默認語言環境的小數點分隔符。

new DecimalFormatSymbols(Locale.getDefault(Locale.Category.FORMA‌​T)).getDecimalSepara‌​tor(); 
1

你得的方式來解決你的問題:

一,你可以使用replace(",", ".")這樣的:

txPower = Double.parseDouble(df.format(txPower).replace(",", ".")); 

兩個,你可以使用本地的DecimalFormat

DecimalFormat df = (DecimalFormat) DecimalFormat.getInstance(); 
df.applyLocalizedPattern("##.##"); 
txPower = txPower + getDeltaP(); 
txPower = Double.parseDouble(df.format(txPower)); 
1

您也可以撥打電話String.format("%.2f", -7.9)

0

Double.parseDouble不支持特定於語言環境的小數點(請參閱文檔here)。嘗試使用DecimalFormat代替解析:

txPower = df.parse(df.format(txPower)).doubleValue(); 

說了這麼多,我要問你希望獲得通過,然後再打開doubletxPowerString,解析字符串轉換爲double,並把結果返回什麼變成txPower

+0

我只是將txpower值格式化爲DecimalFormat df = new DecimalFormat(「##。##」),並指定返回txPower。 – user2964628

相關問題