解析大数以删除逗号而不会丢失java中的精度

Jav*_*uth 3 java

我有一个十进制数字999,999,999,999,999.999作为字符串,我需要删除逗号.为此,我使用以下代码 -

new BigDecimal(NumberFormat.getInstance().parse("999,999,999,999,999.999")
                      .doubleValue()).setScale(3,BigDecimal.ROUND_HALF_UP);
Run Code Online (Sandbox Code Playgroud)

但这给了我四舍五入的价值1000000000000000.000.但我想要的是999999999999999.999.有谁能请让我在java中完成这项工作而不会失去精度.这可能是另一种方法.

使用String上的replaceAll()将","替换为""在我的脑海中,但如果可能,我想用数字来做.

提前致谢.

aio*_*obe 8

当你经过时你会失去精确度.doubleValue().

您需要立即存储它BigDecimal.我建议你使用DecimalFormatsetParseBigDecimal真实.

DecimalFormat nf = new DecimalFormat("###,###.###");
nf.setParseBigDecimal(true);
BigDecimal bd = ((BigDecimal) nf.parse("999,999,999,999,999.999"))
                        .setScale(3,BigDecimal.ROUND_HALF_UP);

System.out.println(bd);  // 999999999999999.999
Run Code Online (Sandbox Code Playgroud)