我正在尝试使用Blackberry RIM API做一个非常简单的事情 - 我有一个字符串1000000
,我要格式化为1,000,000.00
为了做到这一点,我尝试了两个RIM API类,但没有一个能够实现我真正需要的东西:
1)javax.microedition.global.Formatter
String value = "1000000";
float floatValue = Float.parseFloat(value);
Formatter f = new Formatter(); //also tried with locale specified - Formatter("en")
String result = f.formatNumber(floatValue, 2);
结果变量为1000000.00
- 它有小数点分隔符但缺少组分隔符(逗号)。
2)net.rim.device.api.i18n.MessageFormat(声称与Java标准版中的java.text.MessageFormat兼容)
String value = "1000000";
Object[] objs = {value};
MessageFormat mfPlain = new MessageFormat("{0}");
MessageFormat mfWithFormat = new MessageFormat("{0,number,###,###.##}");
String result1 = mfPlain.format(objs);
String result2 = mfWithFormat.format(objs);
result1 :(当mfWithFormat
代码注释掉时)给了我一个简单的1000000
(正如预期的那样,但没用)。
result2:抛出IllegalArgumentException
。
在这一点上,我没有选择接下来尝试什么......
有什么建议吗?
答案 0 :(得分:3)
试试这个: http://supportforums.blackberry.com/t5/Java-Development/Format-a-decimal-number/m-p/763981#M142257
答案 1 :(得分:0)
非常确定你必须编写自己的函数才能做到这一点。
答案 2 :(得分:-1)
无需创建自己的功能即可使用:
String value = "1000000";
MessageFormat msgFormat = new MessageFormat("{0,number,###,###.00}");
String s = msgFormat.format(new Object[]{Integer.valueOf(value)}));
确保传递整数类型而不是字符串,否则你会得到:java.lang.IllegalArgumentException:无法将给定的Object格式化为数字