4

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

结果1:(当mfWithFormat代码被注释掉时)给了我一个简单的1000000(如预期的那样,但没用)。结果2:抛出IllegalArgumentException

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

有什么建议么?

4

3 回答 3

3

试试这个: http: //supportforums.blackberry.com/t5/Java-Development/Format-a-decimal-number/mp/763981#M142257

于 2011-02-01T17:34:53.223 回答
0

很确定您将不得不编写自己的函数来执行此操作。

于 2011-01-31T09:59:43.453 回答
-1

这无需创建自己的函数即可工作:

String value = "1000000";

MessageFormat msgFormat = new MessageFormat("{0,number,###,###.00}");
String s = msgFormat.format(new Object[]{Integer.valueOf(value)}));

确保传递的是整数类型而不是字符串,否则你会得到: java.lang.IllegalArgumentException: Cannot format given Object as a Number

于 2011-12-08T13:53:49.193 回答