2

BigDecimalsを追加するArrayListがあります。

私の問題は、BigDecimalsがアメリカの方法を使用.,ていることです-そして私はそれをヨーロッパの方法で望んでいます-例えば14.70私が望む代わりに14,70

私はメソッドを作りました:

public static String getLocale(BigDecimal n) {
   String newValue      =   null;
   if (n != null) 
      newValue  =   NumberFormat.getInstance().format(n);   
   return newValue;
}

ここで、全体ArrayListを.csvに出力するときは、Bigdecimalsごとにこのメソッドを呼び出します。ただし、ArrayList全体を変更して、要素を「正しい」方法で格納したいということを知ることができるかどうか疑問に思っていました。または、BigDecimalをArrayListに設定したときにロケールを変更することはできますか?

これを行うための最良の方法は何ですか?

4

2 に答える 2

2

最良の方法は、あなたがそれを行った方法ですが、メソッドはロケールを取得せず、BigDecimalをフォーマットするため、のformat()代わりにメソッドに名前を付けます。getLocale()

データはBigDecimalsのリストです。このデータがCSVファイルに表示/保存されるかどうか、およびどのように保存されるかによって、データの性質が変わることはありません。後でこれらのデータを英語のWebページに表示する必要がある場合は、データの性質を変更する必要はありませんが、このデータの表示方法のみを変更する必要があります。

于 2012-09-12T09:21:30.193 に答える
0

まず、(BigDecimal)要素の保存方法を変更する必要はありません。

表示方法を変更する必要があります。これは、 DecimalFormatクラスで実行できます。

例えば:

private static final String BIG_DECIMAL_DEFAULT_FORMAT = "##0.00";
private static final char GROUPING_SEPARATOR = '.';
private static final char DECIMAL_SEPARATOR = ',';
private static final int DIGIT_GROUP_NUMBER = 3;
private static final DecimalFormat decimalFormatter = new DecimalFormat(BIG_DECIMAL_DEFAULT_FORMAT);

static{
    decimalFormatter.setParseBigDecimal(true);
    decimalFormatter.setGroupingSize(DIGIT_GROUP_NUMBER);
    paschiFaceSymbols.setDecimalSeparator(DECIMAL_SEPARATOR);
    paschiFaceSymbols.setGroupingSeparator(GROUPING_SEPARATOR);
}

BigDecimal値を表示するためのメソッドも実装する必要があります。例えば:

public static String format(BigDecimal value, String pattern)
{
    if (value == null){
        throw new IllegalArgumentException("Error:value=null");
    }

    if (pattern != null && !pattern.isEmpty()){
        decimalFormatter.applyPattern(pattern);
    }
    else{
        decimalFormatter.applyPattern(BIG_DECIMAL_DEFAULT_FORMAT);
    }

    return decimalFormatter.format(value);
}
于 2012-09-12T09:28:24.433 に答える