我想将以货币符号为前缀的可能的十进制值转换为仅数字值。
例如 -
该值可以是以下任何一个
String s1 = "£32,847,676.65";
String s2 = "£3,456.00";
String s3 = "£831,209";
我希望转换后的结果是这样的 -32847676.65
, 3456.00
and 831209
.
我尝试使用parse()
NumberFormat 的方法是这样的 -
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.UK);
numberFormat.setMinimumFractionDigits(2);
Number num = nf.parse(s1);
double dd = num.doubleValue();
BigDecimal gg = new BigDecimal(dd);
System.out.println(gg);
但结果是——32847676.649999998509883880615234375
这并不完全正确。
我需要它是数字,这样我就可以执行某种计算。
你们能指导我我还能尝试什么吗
您已经正确解析了该值。问题是这样的:
BigDecimal gg = new BigDecimal(dd);
将值转换为 BigDecimal,双精度数的舍入问题会考虑点后的小数位。使用:
BigDecimal gg = new BigDecimal(dd).setScale(2);
or
BigDecimal gg = new BigDecimal(dd).setScale(2,RoundingMode.HALF_UP);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)