使用Blackberry Java API将十进制数格式化为(###,###。##)

时间:2011-01-28 22:16:29

标签: java blackberry formatter

我正在尝试使用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

在这一点上,我没有选择接下来尝试什么......

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

答案 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格式化为数字