2017-07-19 64 views
0

我有需要格式化一個double值Java.lang.NumberFormatException錯誤解析,在雙重價值

NumberFormat dft = NumberFormat.getInstance(); 
dft.setMaximumFractionDigits(3); 
dft.setRoundingMode(RoundingMode.UP); 
Double n= Double.parseDouble(dft.format(xyz)); //1,733.211 

我不能對其進行格式化,因爲它有「」因此,如何從刪除n

+0

你不根本不需要'Double.parseDouble'。 –

+0

最後期望的價值是多少? – azro

+0

@azro我有小數位後的長數字的雙值,我需要修剪到3小數位並保存回相同的變量 –

回答

1

您需要使用parse方法NumberFormat類的先解析號碼(如果你想有數值),例如:

Number number = NumberFormat.getNumberInstance().parse("1,733.211"); 
System.out.println(number); 

完成後,您可以格式化:

NumberFormat dft = NumberFormat.getInstance(); 
dft.setMaximumFractionDigits(3); 
dft.setRoundingMode(RoundingMode.UP); 
System.out.println(dft.format(number)); 
0

假設XYZ是一個字符串,你只是想刪除逗號:

Double n= Double.parseDouble(dft.format(xyz.replaceAll("[^0-9.]", ""))); 
+0

該數字是一個雙精度值,而不是一個字符串。這是可能的,但多餘的,只有一個解決方法轉換爲字符串,然後回到雙。 –

+0

謝謝我還有一個問題,'NumberFormat nft = new DecimalFormat(「#0.00」); Double num1 = 1.5215897010460924E24; String s1 = String.valueOf(num1); Log.printLine(s); // 1.5215897010460924E24 Log.printLine(nft.format(Double.parseDouble(s1))); // 1521589701046092400000000.00' 爲什麼我得到這樣的輸出? –

+0

他們都是平等的,第一個是科學記數法格式。看看這個例子:https://www.java-tips.org/java-se-tips-100019/34-java-text/2326-display-numbers-in-scientific-notation.html –