![](/img/trans.png)
[英]Android - How to parse String to Number with both comma or point as decimal separator
[英]How to parse String, with both decimal separators comma and dot as well, to Double
我需要從用戶輸入數字作為字符串並將其解析為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當我調試時,我看到這是一個解析問題(顯而易見),但不知道有什么好的做法來解決。
您可以替換點“。” 之前用逗號:,”。
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
try {
Number number = format.parse(formDto.replace('.', ',').getWeight());
kitten.setWeight(number.doubleValue());
} catch (ParseException e) {
e.printStackTrace();
}
就像Mohit Thakur所說的那樣,但是可以編譯。
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
try {
Number number = format.parse(formDto.getWeight().replace('.', ','));
kitten.setWeight(number.doubleValue());
} catch (ParseException e) {
e.printStackTrace();
}
嘗試一下:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
try {
Number number = Double.parseDouble(format.replace(",", ".").getWeight());
kitten.setWeight(number.doubleValue());
} catch (ParseException e) {
e.printStackTrace();
}
謝謝。
如果您只想將String轉換為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 Tertiary Operator來完成此任務。 您可以存儲雙精度值,而不是打印到屏幕上。
如果這樣做沒有幫助,或者您想專門使用NumberFormat進行操作,請在注釋中告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.