将带逗号的数字字符串转换为float

时间:2017-10-12 15:56:32

标签: android floating-point string-formatting decimalformat parsefloat

我有一个字符串格式的数字,我想将它转换为带有两位小数的浮点数。

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

我想我做了很多简单的事情。

是否有更简单的方法来实现这一目标。

提前致谢。 饶

修改 到目前为止我得到了什么。 输入 - “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 个答案:

答案 0 :(得分: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