java - 货币格式问题

标签 java currency

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

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

第二, 如果输入是 10.23,那么欧洲和保加利亚格式都应为 10,23。 我正在尝试使用大十进制,类似,

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

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

最佳答案

您可以将 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,为什么不需要小数位?如果确实如此,您必须再定义两个格式化程序,并且必须根据您的具体情况选择它们。

希望这有帮助。

关于java - 货币格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158859/

相关文章:

javascript - 自动格式化印度货币编号

java - 如何有效地为很多重复的表保存值(value)?

java - java中while循环转换为递归

javascript - 数据表列中的逗号和 $

mysql - MySQL 中货币的最佳数据类型是什么?

java - 如何检查此字符串匹配哪种模式?

java - 无法从类路径中的 jar 中找到 applicationContext.xml

java - minimax 迭代加深搜索和 alpha-beta 剪枝停止时间为 5 秒

java - SQLite 结果集 getString SQLException

c# - 货币正则表达式