1

小数点以下2桁のスケールで数値をフォーマットする必要があります。元の数値は、整数または小数点以下3桁の数値の場合があります。ただし、元の数値が整数であるか小数点以下の桁数であるかに関係なく、結果は常にコンマと小数点以下2桁になるようにフォーマットする必要があります。

  1. 元の数値=56565656.342==>の場合56,565,656.34が必要です
  2. 元の数値=56565656==>の場合56,565,656.00が必要です
  3. 元の数値=56565656.7==>の場合56,565,656.70が必要です

コードをフォーマットしている次のコードを使用していますが、上記の2と3の場合に小数点以下2桁を追加できません。

String originalNumber = "56565656.7";
BigDecimal b = new BigDecimal(originalNumber).setScale(2, BigDecimal.ROUND_HALF_UP);
String formattedNumber = NumberFormat.getInstance().format(b);

これを効果的に達成する方法があれば教えてください。

前もって感謝します。

4

3 に答える 3

6

DecimalFormatクラスを見てください。

または、BigDecimalクラスからsetScaleメソッドを使用することもできます。

        BigDecimal bg1 = new BigDecimal("56565656.342");
        BigDecimal bg2 = new BigDecimal("56565656.00");
        BigDecimal bg3 = new BigDecimal("56565656.70");

        DecimalFormat df = new DecimalFormat("###,###.00");
        System.out.println(df.format(bg1.doubleValue()));
        System.out.println(df.format(bg2.doubleValue()));
        System.out.println(df.format(bg3.doubleValue()));

        System.out.println(bg1.setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bg2.setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bg3.setScale(2, BigDecimal.ROUND_HALF_UP));

収量:

56,565,656.34
56,565,656.00
56,565,656.70
56565656.34
56565656.00
56565656.70

編集:また言及するのを忘れました:あなたが精度を求めているならば、私はあなたが方法を使うことを勧めます、setScale方法を使うことは精度の損失を引き起こすかもしれないを.doubleValue()もたらすでしょう。double

于 2012-08-08T06:01:00.203 に答える
3

NumberFormat印刷するには、小数桁と丸め方法を使用して指定するだけです。

String [] originalNumbers = new String[] {
   "56565656.342",
   "56565656.7",
   "56565656"
};

NumberFormat df = NumberFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
df.setRoundingMode(RoundingMode.HALF_UP);

for (String number : originalNumbers) {
   String formattedNumber = df.format(new BigDecimal(number));

   System.out.println(formattedNumber);
}

印刷します

56,565,656.34
56,565,656.70
56,565,656.00

**編集**

DecimalFormat df = new DecimalFormat("#,###.00");

上記のコードでまったく同じ結果が生成されます。

于 2012-08-08T06:15:44.053 に答える
-2

DecimalFormatクラスがあなたに代わってそれを行います....適切なフォーマットを指定する必要があります。

于 2012-08-08T06:09:11.930 に答える