我想将可能带有货币符号前缀的十进制值转换为数字值。
例如 -
的值可以是像以下任何将带有货币符号的数值转换回带有NumberFormat的十进制
String s1 = "£32,847,676.65";
String s2 = "£3,456.00";
String s3 = "£831,209";
我想结果之后转换到像 - 32847676.65
,3456.00
和831209
。
我试图用这种方式的NumberFormat parse()
方法 -
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
这是不太完全正确的。
我需要它是数字,以便可以我可以执行某种计算。
你能指导我与我还有什么我可以尝试
对不起,这是行不通的。如果我sysout'gg.toString()'或'gg.toPlainString()'它会导致'3.3E + 7'和'33000000' – 2011-03-30 10:32:55
@ Swift-Tuttle:对不起,请试试这个变种 – Daniel 2011-03-30 10:37:37
是的,用RoundingMode作品完美。非常感谢。赞赏。 – 2011-03-30 10:47:58