如何在java中将不同货币的货币表示形式转换为十进制值
假设我的货币价值以刚果货币表示为10.000,00,我希望将其转换为十进制金额,如10000.00。货币代表可以是来自不同国家的任何货币,其结果应为十进制金额如何在java中将不同货币的货币表示形式转换为十进制值,java,Java,假设我的货币价值以刚果货币表示为10.000,00,我希望将其转换为十进制金额,如10000.00。货币代表可以是来自不同国家的任何货币,其结果应为十进制金额 如何在java中实现这一点?最好将货币以整数格式保存在尽可能小的硬币价值中-例如,美元-如果您有1美元和25美分-只需将其保存为整数125美分-这有助于避免java浮点/双倍精度错误的常见问题 最好将货币以整数格式保存在尽可能小的硬币价值内(即美元),如果您有1美元和25美分,只需将其保存为整数125美分即可,这有助于避免java浮点/双
如何在java中实现这一点?最好将货币以整数格式保存在尽可能小的硬币价值中-例如,美元-如果您有1美元和25美分-只需将其保存为整数125美分-这有助于避免java浮点/双倍精度错误的常见问题 最好将货币以整数格式保存在尽可能小的硬币价值内(即美元),如果您有1美元和25美分,只需将其保存为整数125美分即可,这有助于避免java浮点/双倍精度错误的常见问题 您可以使用replace,例如:
money.replace(",", "#").replace(".", "").replace("#", ".")
这将为您提供:
10000.00
10000.0
如果要获取十进制值,可以使用:
String money = "10.000,00";
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse(money.replace(".", ""));
System.out.println(number);
double d = number.doubleValue();
System.out.println(d);
这将为您提供:
10000.00
10000.0
您可以使用替换,例如:
money.replace(",", "#").replace(".", "").replace("#", ".")
这将为您提供:
10000.00
10000.0
如果要获取十进制值,可以使用:
String money = "10.000,00";
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse(money.replace(".", ""));
System.out.println(number);
double d = number.doubleValue();
System.out.println(d);
这将为您提供:
10000.00
10000.0
注意:对于以下内容,我假设不一定事先知道应该使用哪种货币/语言环境
我最近就是这样做的:所有可能的标记(,'应该足够了)的字符串。然后连接除最后一个以外的部分。在添加之前,您需要添加任何小数点符号。所以,“10.000,00”=>10000.00。然后可以将其转换为BigDecimal。 () 这样做的原因是:您可以处理大多数格式,如
- 1.234,56
- 1234.56
- 1'234.56
- 1234.567
我不知道您是否对此感兴趣,但Java8有一个类,它可以为您提供许多
我还建议编写一个单元测试,这样您就可以确保所有预期的输入格式最终都是您想要的格式。当然,我建议对接受/允许的格式进行大量的文档记录。注意:对于以下内容,我假设不一定事先知道应该使用哪种货币/语言环境
我最近就是这样做的:所有可能的标记(,'应该足够了)的字符串。然后连接除最后一个以外的部分。在添加之前,您需要添加任何小数点符号。所以,“10.000,00”=>10000.00。然后可以将其转换为BigDecimal。 () 这样做的原因是:您可以处理大多数格式,如
- 1.234,56
- 1234.56
- 1'234.56
- 1234.567
我不知道您是否对此感兴趣,但Java8有一个类,它可以为您提供许多 我还建议编写一个单元测试,这样您就可以确保所有预期的输入格式最终都是您想要的格式。当然,我建议对哪些格式被接受/允许进行广泛的文档记录。方法 正是为了这个目的而制造的。
它负责所有特定于国家/地区的格式设置(小数点或逗号、货币名称、数字前后的货币、千位分组等) 您可以这样使用它,例如刚果(民主共和国): 结果是“CDF 10000.00”方法 正是为了这个目的而制造的。
它负责所有特定于国家/地区的格式设置(小数点或逗号、货币名称、数字前后的货币、千位分组等) 您可以这样使用它,例如刚果(民主共和国):
结果是“CDF 10000.00”我最近就是这样做的:用所有可能的标记分割字符串(,'应该足够了)。然后连接除最后一个以外的部分。在添加之前,您需要添加任何小数点符号。所以,“10.000,00”=>10000.00。然后可以将其转换为BigDecimal。(不要对货币值使用float或double。)我不知道您是否感兴趣,但Java 8有一个
Currency
类,可以为您提供。您知道应该使用什么货币或语言环境吗?我最近就是这样做的:用所有可能的标记分割字符串(,'应该足够了)。然后连接除最后一个以外的部分。在添加之前,您需要添加任何小数点符号。所以,“10.000,00”=>10000.00。然后可以将其转换为BigDecimal。(不要对货币值使用float或double。)我不知道您是否对此感兴趣,但Java 8有一个Currency
类,可以为您提供。您知道应该使用哪种货币或语言环境吗?请注意,您必须保留它是哪种货币的信息,因为并非所有货币都有2位十进制值。有些有3个小数,有些没有!此外,在某些金融应用程序中,您可能需要4位小数(=美分/100)。这样,他就无法代表超过2100万美元或更糟糕的2100万印尼盾(1700美元)的参考值