簡體   English   中英

附加兩個十進制數字串並解析為double

[英]Appending two decimal number strings and parse as double

我想從String獲取結果0.054563並將其解析為double 我目前的嘗試看起來像,

String number1 = "54,563";
String number2 = "54,563";

String value = "0.0" + number1;
String value2 = "0.0" + number2;

Double rd1 = Double.parseDouble(value.replaceAll(",","."));
Double rd3 = Double.parseDouble(value2.replaceAll(",","."));
System.out.println(rd1);

但是,當我運行它時,我收到以下錯誤:

線程“main”中的異常java.lang.NumberFormatException:多個點

你得到了例外,因為value將是“0.054,563”,並且在double字面積中只允許一個句點,如0.1 您的代碼value.replaceAll(",",".")只是將值更改為0.054.563 ,由於這兩個句0.054.563 ,這仍然是非法的。 之前刪除逗號

String value = "0.0" + number1.replaceAll(",", "");

然后,您可以使用Double rd1 = Double.parseDouble(value)而無需額外的replaceAll(...)

我進一步強烈建議您以數學方式進行轉換,而不是通過String轉換和解析,因為這些是不必要且相當昂貴的操作。

您可以使用正則表達式刪除所有非數字。 模式\\D匹配非數字。 如果您需要多次執行此操作,則使用Pattern會更快。 所以你可以做點什么,

String number1 = "54,563";
Pattern p = Pattern.compile("\\D");
Matcher m = p.matcher(number1);
String number2 = "0.0" + m.replaceAll("");
System.out.println(Double.parseDouble(number2));

或者如果你只需要做一次,你可以像在線一樣進行

String number1 = "54,563";
String number2 = "0.0" + number1.replaceAll("\\D", "");
System.out.println(Double.parseDouble(number2));

兩者都輸出你想要的

0.054563

是的,這是可能的。 你必須首先將number1更改為字符串,然后執行該操作。

 String value = "0.0" + Integer.toString(number1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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