簡體   English   中英

如何將String(同時使用小數點分隔符和逗號和點分隔)解析為Double

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM