0

我有一個字符串格式的數字,我想將它轉換爲浮點數並保留兩位小數。用逗號將數字字符串轉換爲浮點數

字符串格式的數字可以類似於「1」或「1 128」(一千一百二十八)。

起初,我試圖

String stringNumber = "1"; //works fine EXPECTED OUTPUT -- 1.00 
String stringNumber = "1,128"// fails because it has a comma. EXPECTED OUTPUT -- 1,128.00 

Float f = Float.parseFloat(stringNumber); 
String s = String.format("%.2f", f); 

做Float.parseFloat我可以從字符串中刪除逗號前,並在最後使用的格式如下圖所示,以獲得逗號後面

format("% ,d", number) 

我認爲我做了很多簡單的事情。

有沒有更簡單的方法來實現這一點。

在此先感謝。 Rao

編輯 到目前爲止我得到了什麼。 輸入 - 「1,128」 使用下面的代碼轉換爲「1,128.0」 我唯一缺少的是一個額外的小數點。 使用decimalFormat如何添加額外的小數點任何想法傢伙?

String qa = "1,128"; 
String nocomma = qa.replace(",", ""); 
Float f = Float.parseFloat(nocomma); 
String s = String.format("%.2f", f); 

DecimalFormat formatter = new DecimalFormat("#,###,###.0#"); 
String yourFormattedString = formatter.format(f); 
return yourFormattedString; 

回答

0

1.使用更換,使用""更換","

然後parseFloat

String stringNumber = "1,128"; 
String result = null; 
result = stringNumber.replace(",",""); 
Float f = Float.parseFloat(result); 

2.使用StringTokenizer

java.util.StringTokenizer stringNumber = new StringTokenizer("1,128", ","); 
StringBuffer sb = new StringBuffer(); 
while (stringNumber.hasMoreTokens()) { 
    sb.append(stringNumber.nextToken()); 
} 
Float f = Float.parseFloat(sb.toString()); 

編輯

// edited here ,change to this 
DecimalFormat formatter = new DecimalFormat("#,###,##0.00"); 
String yourFormattedString = formatter.format(f); 
Log.e("DecimalFormat", yourFormattedString); 

輸出

1,128.00 
+0

謝謝您的答覆,我知道我能做到這一點,但如果我輸入的是1128,並且我也做了parsefloat將其轉換爲1128.00。但我期望的輸出是1,128.00。我可以使用decimalFormatter'DecimalFormat formatter = new DecimalFormat(「#,###,###。##」)',但.00仍然不顯示。我想我不是十進制格式化程序的權利。 – BRDroid

+0

如果問題只與最後的零有關,如果將1,128轉換爲字符串並在其末尾添加00,它可能會有幫助嗎? – Simo

+0

沒有可能因爲可以有一個小數點 – BRDroid

相關問題