3

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

new BigDecimal(NumberFormat.getInstance().parse("999,999,999,999,999.999")
                      .doubleValue()).setScale(3,BigDecimal.ROUND_HALF_UP);

但这给了我四舍五入的值 1000000000000000.000。但我想要的是999999999999999.999。谁能让我在不丢失精度的情况下如何在java中完成这项工作。不可能有什么替代方法来做到这一点。

我想到了在 String 上使用 replaceAll() 将“,”替换为“”,但如果可能的话,我想用数字来做。

提前致谢。

4

1 回答 1

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
于 2012-08-06T06:36:59.513 回答