1

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

首先,当输入为 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());

但是我无法将其作为一种通用实用程序来转换为欧元或保加利亚货币。是否有相同的实用程序?有人可以帮助我吗?

4

1 回答 1

1

您可以java.text.NumberFormat.getCurrencyInstance(Locale)与适当的当地人一起使用。如果没有符合您要求的本地人,则java.text.DecimalFormat使用模式##' '##0.00resp 构建您自己的十进制格式化程序。 ##,##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,为什么你不想要小数位?如果确实是这种情况,您必须再定义两个格式化程序,并且必须根据您的条件选择它们。

希望这可以帮助。

于 2013-03-01T13:45:00.717 回答