2010-01-13 103 views

回答

21

这是一个我总是最后使用无论是在Java类或通过FMT:formatNumber JSTL标签:

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00"); 
String formatted = format.format(15.5); 

它总是产生至少$ 0.00美元和显示时是一致的。在需要的地方还包括数千个分离器。如果这是您的要求,您可以将美元符号前面的减号移动。

2

如果你想要一个特定的格式,而不是依靠默认值,最好创建自己的DecimalFormat

编辑:你也许也投NumberFormat.getCurrencyInstance()的结果DecimalFormat并调整自己的喜好。

+0

也许你是对的,但我的应用程序应该能够到f ormat货币在可能的语言环境中。对所有这些地区实施格式化不是太难吗? – 2010-01-13 12:16:24

30

它需要对由NumberFormat.getCurrencyInstance()返回的DecimalFormat进行一点调整,以独立于区域的方式进行。下面是我(在Android测试):

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance(); 
String symbol = formatter.getCurrency().getSymbol(); 
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need 
formatter.setNegativeSuffix(""); 

IIRC,Currency.getSymbol()可能不会对所有系统中的所有区域设置返回一个值,但它应该为主要的工作(我认为它有一个合理的后备它自己的,所以你不应该做任何事情)

1

尝试:

NumberFormat.getCurrencyInstance(Locale.CANADA);

0
NumberFormat.getCurrencyInstance(Locale.UK); 
相关问题