2011-01-28 22 views
4

我正在尝试使用Blackberry RIM API做一件非常简单的事情 - 我有一个字符串1000000,我想要格式化到1,000,000.00使用黑莓Java API将十进制数格式化为(###,###。##)

我已经为了做到这一点尝试了两种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 - 它有小数点分隔符但缺少组se parators(逗号)。

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(如预期,但无用)。 结果2:投掷IllegalArgumentException

在这一点上我出的选项来尝试下什么......

有什么建议?

+0

它使用的语言环境是什么?你可以尝试不同的语言环境吗? – 2011-01-28 22:19:44

+0

Blackberry文档说:_此Formatter类的此实现此时仅支持语言环境中性格式。因此,我没有在我的示例中指定区域设置。我也尝试使用`en`语言环境,但是我得到了相同的结果。我相信,我的模拟器的语言环境应该是`en`或`en-US`。 – 2011-01-28 22:34:09

回答

0

很确定你将不得不编写自己的函数来做到这一点。

-1

这个工作,而不需要创建自己的功能:

String value = "1000000"; 

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

确保你传递一个整数类型,而不是字符串,否则你会得到:JAVA。 lang.IllegalArgumentException:无法将给定对象格式化为数字

相关问题