【问题标题】:Currency formatting Issues货币格式问题
【发布时间】:2013-03-01 13:24:32
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过使用 NumberFormat.getCurrencyInstance() 吗?

标签: java currency


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

  • 仅供参考:Oracle 的 Java 7 实现 supports bg_BG 用于 java.utiljava.text
猜你喜欢
  • 1970-01-01
  • 2022-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多