Java 货币格式问题

Java 货币格式问题,java,currency,Java,Currency,我正在尝试将输入字符串转换为欧元/保加利亚货币,我有两个场景 首先,, 当输入为10000时,保加利亚格式应为10000,欧元格式应为10.000 第二,, 如果输入为10.23,则欧洲和保加利亚格式均应为10,23。 我试着用大十进制,比如 String s = "+000000055511.00"; BigDecimal b = new BigDecimal(s.replace(",", ".")); b.setScale(2, RoundingMode.

我正在尝试将输入字符串转换为欧元/保加利亚货币,我有两个场景

首先,, 当输入为10000时,保加利亚格式应为10000,欧元格式应为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));
另一个问题是,如果你的数字是10000,为什么你不想要分数?如果确实是这样,您必须定义两个格式化程序,并且必须根据您的规则选择它们


希望这有帮助。

您可以使用
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));
另一个问题是,如果你的数字是10000,为什么你不想要分数?如果确实是这样,您必须定义两个格式化程序,并且必须根据您的规则选择它们


希望这能有所帮助。

您是否尝试过使用NumberFormat.getCurrencyInstance()?您是否尝试过使用NumberFormat.getCurrencyInstance()?仅供参考:Oracle的Java 7实现
bg\u bg
用于
Java.util
Java.text
。仅供参考:Oracle的Java 7实现
bg\code>用于
Java.util
Java.text