货币格式问题

时间:2013-03-01 13:24:33

标签: java currency

我正在尝试将输入字符串转换为欧元/保加利亚货币,我有两种情况。

首先, 当输入为10,000时,保加利亚格式应为10 000,欧元格式应为10.000

其次, 如果输入是10.23,则欧洲和保加利亚格式应为10,23。 我正在尝试使用Big Decimal,类似的东西,

String s = "+000000055511.00";
         BigDecimal b = new BigDecimal(s.replace(",", "."));
         b.setScale(2, RoundingMode.HALF_UP);
         System.out.println(b.toPlainString());

但我无法将其作为一种普通的实用工具,可以转换成欧元或保加利亚货币。有没有相同的实用工具?有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以将java.text.NumberFormat.getCurrencyInstance(Locale)与适当的本地人一起使用。如果没有符合您要求的本地人,那么使用模式java.text.DecimalFormat resp构建您自己的小数格​​式器##' '##0.00##,##0.00加上适当的货币符号。格式化程序可以应用于BigDecimal

String s = "+000000027511.00";
BigDecimal B = new BigDecimal(s);
// don't replace "." by ",": english number format expected here
b.setScale(2, RoundingMode.HALF_UP);

NumberFormat f = new DecimalFormat(...); //initialize as requested see docs
System.out.println(f.format(b));

另一个问题是,如果你的号码是10,000,你不想要小数位?如果确实如此,您必须更多地定义两个格式化程序,并且必须根据您的creteria选择它们。

希望这有帮助。