gpt4 book ai didi

java - 使用 NumberFormat 将带有货币符号的数值转换回 Decimal

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:56 25 4
gpt4 key购买 nike

我想将一个可能以货币符号为前缀的 Decimal 值转换为仅数值。
例如-
该值可以像以下任何一个

String s1 = "£32,847,676.65";
String s2 = "£3,456.00";
String s3 = "£831,209";

我希望转换后的结果类似于 - 32847676.653456.00831209
我尝试以这种方式使用 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 这并不完全正确。

我需要它是数字,以便我可以执行某种计算。
你们能指导我还有什么我可以尝试的吗

最佳答案

您已经正确解析了该值。问题是这样的:

BigDecimal gg = new BigDecimal(dd);

您将值转换为 BigDecimal, double 的舍入问题会考虑点后的小数位。使用:

BigDecimal gg = new BigDecimal(dd).setScale(2);

BigDecimal gg = new BigDecimal(dd).setScale(2,RoundingMode.HALF_UP);

关于java - 使用 NumberFormat 将带有货币符号的数值转换回 Decimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com