3

文字列として 10 進数 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すぐに保管する必要があります。DecimalFormatandsetParseBigDecimalを trueに使用することをお勧めします。

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 に答える