在java sdk中更改语言的DecimalFormatSymbols符号

时间:2018-05-23 08:40:18

标签: java decimalformat

我使用的是用Java构建的第三方软件来显示数字。该软件是多语言的,我们使用的语言之一是Euskera(eu,eu_ES)。数字格式在此语言中显示错误(123,456.89而不是123.456,89)。

更深入地搜索并反编译某些类我已经看到数字格式化是使用DecimalFormatSymbolsDecimalFormat完成的,所以我已经junit test看了如果问题来自第三方软件或来自java。

Locale locale = new Locale("eu");
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(locale);
String pattern = "#,###.##";
DecimalFormat decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);
String formatted = decimalFormat.format(1234567.89765);
assertEquals("1.234.567,9", formatted);

运行此测试后,我看到的是以这种方式格式化的Java。

一方面,我已经下载了第三方软件的最新版本,因为它是开源的,我可以做一些有效的解决方法。另一方面,我们使用6年前的版本,由于操作系统要求和此版本在Sourceforge的CVS中无法下载,因此无法升级。

有没有办法可以在Java级别更改Euskera的grouping separatordecimal separator

1 个答案:

答案 0 :(得分:0)

是的,你可以,但它有点像一个障碍。从本质上讲,您可以创建一个自定义的NumberFormatProvider,它为eu_ES执行不同的操作,并委托给所有其他语言环境的原始提供程序。您必须将它放在带有META-INF / services / xxxx文件的JAR中,并将其包含在类路径中。

请参阅此问题:Java override locale setting for specific locale

此处有更多说明: