用逗号将数字字符串转换为浮点数

问题描述:

我有一个字符串格式的数字,我想将它转换为浮点数并保留两位小数。用逗号将数字字符串转换为浮点数

字符串格式的数字可以类似于“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; 

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