2016-11-21 55 views
0

我需要從用戶輸入數字作爲字符串並將其解析到Double對象。如何解析字符串,同時帶有小數點分隔符逗號和點,以雙倍

我希望它可以用逗號作爲小數點分隔符,並且點也可以保存並僅用點輸出。

例子:22,33 - > 22.33和22.33 - > 22.33

我用的是:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
     try { 
      Number number = format.parse(formDto.getWeight()); 
      kitten.setWeight(number.doubleValue()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

但它只是變得與價值 '' 分隔符。當用戶輸入點時,它會丟失所有小數,並返回22.33 - > 22.0或4.1 - > 4.0 當我調試時,我發現它是一個解析問題(顯而易見),但不知道什麼是解決它的好實踐。

+0

請指定編程語言 - 它是Java嗎? – lospejos

+0

已更新的問題。是的,它是Java –

回答

3

像莫希特塔庫爾說,但編譯

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
try { 
    Number number = format.parse(formDto.getWeight().replace('.', ',')); 
    kitten.setWeight(number.doubleValue()); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

謝謝Estanislao,供您修正。 –

3

您可以替換點「。」。用逗號:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
    try { 
     Number number = format.parse(formDto.replace('.', ',').getWeight()); 
     kitten.setWeight(number.doubleValue()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
0

一次,」解析之前嘗試這樣的:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
     try { 
      Number number = Double.parseDouble(format.replace(",", ".").getWeight()); 
      kitten.setWeight(number.doubleValue()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

感謝

0

如果。你只是想將你的字符串轉換爲Double值,那麼它可以用下面的方法完成

String numberStr1 = "22,33"; //number with comma as decimal separator 
String numberStr2 = "22.33"; //number with dot as decimal separator 

System.out.println(numberStr1.contains(",") ? Double.valueOf(numberStr1.replace(',', '.')):Double.valueOf(numberStr1)); 
System.out.println(numberStr2.contains(",") ? Double.valueOf(numberStr2.replace(',', '.')):Double.valueOf(numberStr2)); 

我已經使用Java第三運營商來完成這項任務。您可以將double值存儲而不是打印到屏幕上。

如果這沒有幫助,或者你想專門與NumberFormat做它,然後讓我知道在評論。

相關問題