ロケールJava.text.NumberFormatを指定すると:
NumberFormat numberFormat = NumberFormat.getInstance();
その数値形式で小数点記号(カンマまたはポイントの場合)として使用される文字を取得するにはどうすればよいですか?新しいDecimalFormat(format)を使用せずにこのプロパティを変更するにはどうすればよいですか?
ありがとう
ヘルパークラス DecimalFomatSymbols は、あなたが探しているものです:
DecimalFormat format=DecimalFormat.getInstance();
DecimalFormatSymbols symbols=format.getDecimalFormatSymbols();
char sep=symbols.getDecimalSeparator();
必要に応じてシンボルを設定するには:
//create a new instance
DecimalFormatSymbols custom=new DecimalFormatSymbols();
custom.setDecimalSeparator(',');
format.setDecimalFormatSymbols(custom);
EDIT:この回答は、DecimalFormat
に対してのみ有効であり、質問で必要なNumberFormat
に対しては無効です。とにかく、それが著者を助けるかもしれないので、私はここでそれをさせます。
biziclopおよびJoachim Sauerに同意します。これは、小数記号とグループ化セパレーターをいじってこの作業を手動で行うと、多くの問題が発生する可能性があることです。 NumberFormat
getInstanceメソッドでlocaleパラメーターを使用すると、すべての作業が自動的に行われます。必要に応じて、千のグループ化区切りを簡単に無効にできます。
次のjunitテストメソッド(合格)は、英語とドイツ語のロケールに基づいてこの動作を示しています。
public void testFormatter() {
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.UK);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN);
assertEquals(',', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
//and in case you want another decimal seperator for a specific locale
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
formatter.setDecimalFormatSymbols(decimalFormatSymbols);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
}
Ifあなたの NumberFormat
インスタンスは DecimalFormat
、次に、 getDecimalFormatSymbols()
を使用してその情報を取得できます。
一般的に、その情報にアクセスすることはできません。
なぜあなたはそれが必要なのですか?