Android 将带逗号的数字字符串转换为浮点数

Android 将带逗号的数字字符串转换为浮点数,android,floating-point,string-formatting,decimalformat,parsefloat,Android,Floating Point,String Formatting,Decimalformat,Parsefloat,我有一个字符串格式的数字,我想把它转换成两位小数的浮点 字符串格式的数字可以类似于“1”或“1128”(一千一百二十八) 起初我试过 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(s

我有一个字符串格式的数字,我想把它转换成两位小数的浮点

字符串格式的数字可以类似于“1”或“1128”(一千一百二十八)

起初我试过

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) 
我想简单的说,我做了很多事情

有没有更简单的方法来实现这一点

提前谢谢。 饶

编辑 到目前为止我得到了什么。 输入-“1128” 使用以下代码将转换为“1128.0” 我唯一缺少的是一个额外的小数点。 使用十进制格式如何添加一个额外的小数点有什么想法吗

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.使用替换,使用
替换
,“

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());
然后
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

感谢您的回复,我知道我可以做到这一点,但是如果我的输入是1128,并且我所做的parsefloat将其转换为1128.00。但是我想要的输出是1128.00。我可以使用decimalFormatter'decimalformatt formatter=new DecimalFormat(“#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#、#”)但是.00仍然没有显示。我想我没有正确使用十进制格式化程序。如果问题只在于末尾的零,那么如果您将1128转换为字符串,并在其末尾简单地添加00,它会有帮助吗?您可以再试一次。@Rao