Java - NumberValue转换为字符串,不带货币符号

k2arahey  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(119)

我正在尝试将NumberValue格式化为当前区域设置格式的String。
例如,对于Locale.德国,这些将是我试图获得的结果:
我尝试过的:

String test1 = NumberFormat.getInstance().format(1.1);
// -> 1,1
String test2 = NumberFormat.getCurrencyInstance().format(1.1);
// -> 1,10 €

字符串
我怎样才能得到与第二个例子相同的格式,而不带货币符号?或者,我怎样才能确保第一个例子的结果总是具有当前区域所需的小数量?
编辑:由于有些货币有0,2或3位小数,我不认为将小数设置为固定金额会有正确的结果。
此外,有些货币的符号在前面,有些在后面,所以切断最后一个字符可能也不起作用。
http://apps.cybersource.com/library/documentation/sbc/quickref/currencies.pdf

yyhrrdl8

yyhrrdl81#

java.util.Currency提供了必要的信息。在纯Java代码中打印不带货币符号的货币值的合理方法是获取一个通用NumberFormat示例,并将其配置为使用相应Currency对象定义的位数:

NumberFormat numberFormat = NumberFormat.getInstance(myLocale);
Currency currency = Currency.getInstance(myLocale);
numberFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());

字符串
如果您需要一种特定的货币,而不是您使用的区域设置的默认货币,请使用Currency.getInstance()String覆盖,并提供适当的货币代码。

x6492ojm

x6492ojm2#

这里有一个更健壮的方法(对于某些货币,minimumFractionDigits和maximumFractionDigits不一定等于Currency.getDefaultFractionDigits()):

val numberFormat = NumberFormat.getNumberInstance().apply {
    val priceFormat = NumberFormat.getCurrencyInstance()
    minimumFractionDigits = priceFormat.minimumFractionDigits
    maximumFractionDigits = priceFormat.maximumFractionDigits
}

字符串

相关问题