将货币格式化为本地区域设置,但忽略.00小数位

时间:2015-05-01 11:34:50

标签: java android currency number-formatting

我正在尝试以用户区域设置格式显示以数据指定的相对货币的商品价格。

e.g。该项目为欧元,英国应显示为€123.64,但在法国应显示为123,64€

我希望根据用户区域设置放置货币符号和小数点分隔符。

然而,让我陷入困境的是如果项目没有便士/美分值,那么如何剥离.00。

我尝试过使用

NumberFormat f = NumberFormat.getInstance(loc);
if (f instanceof DecimalFormat) {
    ((DecimalFormat)f).setDecimalSeparatorAlwaysShown(false);
}

来自DecimalFormat.html#setCurrency

但它没有货币符号,即使我尝试使用f.setCurrency()。

我也尝试将getInstance更改为getCurrencyInstance,现在应用货币符号,但忽略setDecimalSeparatorAlwaysShown(false)部分。

我已经考虑过检查剩余部分是否为0,然后将其剥离,但这需要我检查/知道小数分隔符是什么,虽然可能是可行的但是非常hacky。

有没有人知道做所有这些事情的方法?!

1 个答案:

答案 0 :(得分:16)

好吧,我已经完全愚蠢和盲目,并没有注意到方法

setMaximumFractionDigits(int)

如果小数部分为0,我现在将其设置为0.