将特定于区域设置的字符串转换为大十进制数的最佳方法
2022-09-01 01:28:51
我必须将德语区域设置格式转换为.但是,我正在努力寻找最佳解决方案。String
BigDecimal
下面的代码显示了我的问题:
String numberString = "2.105,88";
NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN);
try {
Number parsed = nf.parse(numberString);
BigDecimal bd1 = new BigDecimal(parsed.toString());
System.out.println(bd1.toString());
BigDecimal bd2 = new BigDecimal(parsed.doubleValue());
System.out.println(bd2);
BigDecimal bd3 = new BigDecimal(numberString);
System.out.println(bd3);
} catch (ParseException e) {
e.printStackTrace();
}
这是
2105.88
2105.8800000000001091393642127513885498046875
线程“main” java.lang.NumberFormatException at java.math.BigDecimal中的异常。(未知来源)在java.math.BigDecimal。(未知来源)在测试中。BigDecimalTest.main(BigDecimalTest.java:22)
第一个输出是正确的,但是将 a 转换为 a(确切地说),然后再次转换回 a,然后转换为特定类型的 , 并没有真正意义。String
Number
Double
String
Number
BigDecimal
第二个输出不正确,但可以通过设置 的刻度来解决。但是,位数并不总是已知的。BigDecimal
第三个输出显然不是我想要的。
我的问题是:最好的方法是什么?有没有更好的方法来做到这一点?