Žyg*_*tas 30 java currency number-formatting
如何NumberFormat.getCurrencyInstance()使用减号打印负美元货币值?
age*_*ped 38
它需要稍微调整返回的DecimalFormat,NumberFormat.getCurrencyInstance()以独立于语言环境的方式进行.这是我做的(在Android上测试):
DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need
formatter.setNegativeSuffix("");
Run Code Online (Sandbox Code Playgroud)
IIRC,Currency.getSymbol()可能不会为所有系统返回所有语言环境的值,但它应该适用于主要系统(并且我认为它本身具有合理的回退,因此您不必做任何事情)
Gen*_*diy 24
以下是我总是在java类或fmt:formatNumber jstl标记中使用的结果:
DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);
Run Code Online (Sandbox Code Playgroud)
它总是产生至少$ 0.00并且在显示时是一致的.还需要包括数千个分隔符.如果这是您的要求,您可以在美元符号前面移动减号.
由于我再次遇到这个问题,我做了一些研究,发现了ICU提供的更具弹性的解决方案:
NumberFormatter
.withLocale(...)
.unit(Currency.getInstance("USD"))
.sign(SignDisplay.AUTO) // "123", "0", and "-123"
.format(123)
.toString();
Run Code Online (Sandbox Code Playgroud)
查看NumberFormatter的 API 文档以获取更多详细信息。
| 归档时间: |
|
| 查看次数: |
27560 次 |
| 最近记录: |