Javasは、Decimalformat:どのように拒否する"無効"入力グループ化部で"年"、小数部で"?
-
16-09-2019 - |
質問
利用の場合、以下のNumberFormat:
NumberFormat amountFormat = NumberFormat
.getNumberInstance(I18N.getThreadLocale());
amountFormat.setMaximumFractionDigits(2);
amountFormat.setMinimumFractionDigits(2);
を取得し、以下の結果を解析するときに通
System.out.println(amountFormat.parse(value));
- 10,50 => 1050
- 10,5 => 105
- 0,25 => 25
知っているロケールです。英語の""は、グループセパレーターが不要になる。がいいかもしれませんが、上記の結果をうです。当社のお客様は、かつ設定します。
どうしを無効にするこング?
いて以下の結果:
- 10,50=>ParseException
- 10,5=>ParseException
- 0,25=>ParseException
ありえるのか?はないと、プログラムを自分のNumberFormat?
解決
一つの問題は、(英語ロケールでは「」)グループ化文字です。 NumberFormatインスタンスのグループ化のサポートを無効にするには、単にsetGroupingUsed(false)を呼び出すことができます。
このしかし、それは未知の文字に到達するまでのNumberFormatは、文字列の先頭から解析し、即ちという、別の問題につながります。 (「12foo」)を解析グループ化が無効になっている場合、解析(「10,50」)は10を返します。同じように、12を返します。入力文字列全体が実際に解析されたかどうかを確認するには、あなたが持つParsePosition引数を使用して解析メソッドを使用し、そのインデックスをチェックするために持っていて、入力文字列が最後に解析されたか、パーサは文字列の以前の位置で停止した場合。
所属していません StackOverflow