0

私は使っている

public static String displayNumberAmount(Number amount, Locale locale) {
    String.format(locale, "%1$,.2f", amount);
}

私の数字をロケールと2桁の小数点以下にフォーマットします。

番号が 1032 の場合、1 032,00 に正しくフォーマットされますが、1000 より小さい番号、たとえば 890 の場合、890 としてフォーマットされます (常に 2 つの小数点が必要です)。

オブジェクトでは、これらの値は BigDecimals として格納されます。

BigDecimal val = object.getAmount();
String formattedVal = displayNumberAmount(val, myLocale);

なぜか教えてくれますか?

4

2 に答える 2

0

あなたのコードは私にとってはうまくいきます。これは私のテストです:

import java.math.BigDecimal;
import java.util.Locale;

public class Tester{
    public static void main(String args[]){
        System.out.println("999 " + displayNumberAmount(new BigDecimal(999.99), Locale.FRENCH));
        System.out.println("1000 " + displayNumberAmount(new BigDecimal(1000.99), Locale.FRENCH));
        System.out.println("1001 " + displayNumberAmount(new BigDecimal(1001.99), Locale.FRENCH));
    }

    public static String displayNumberAmount(Number amount, Locale locale) {
        return String.format(locale, "%1$,.2f", amount);
    }

}
于 2013-05-21T10:31:05.943 に答える