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