浮動小数点数を解析するためのメソッドを書く際に問題が発生しました。基本的には、floatの文字列値が渡されるメソッドがあります。 '.12'が渡された場合、10進数の前に '0'をあらかじめ付加してはいけません。 それに '0.12'を渡すと、最初の '0'が削除されてはならず、番号はそのままにしてください。10進数の前に接頭辞がないDecimalFormatパターン
私が何をしても、「0」は常に10進数の前に接頭辞が付きます。
私が書かれている方法は次のとおりです。
public static Number parseNumber(String value) throws ParseException {
NumberFormat numberFormatter = NumberFormat.getInstance(Locale.US);
((DecimalFormat) numberFormatter).setParseBigDecimal(true);
String displayFormatCode = "###,###,###.##";
((DecimalFormat) numberFormatter).applyPattern(displayFormatCode);
return numberFormatter.parse(value);
}
ここでの制約は、私は正規表現をチェックするための追加のコードを設定することができないということです。このメソッドは他のデータ型にも使用でき、上記のメソッドで使用されているdisplayFormatCode
は外部で設定された変数であるため、適切なフォーマットコードを把握する必要があります。
私はいくつかのフォーラムを検索しましたが、私が得た唯一の解決策は、ここではオプションではない正規表現を使用することでした。それは私の環境でOK実行しているので
あなたは 'format'の値を返す必要があります - あなたは' Number'を返しています –
達成したいことは不明です。 '.12'と' 0.12'は数学的にも同じ値でも、 'double'でも同じです。 – Henry
そうですが、これはクライアントからのものです。だからそれを助けることはできない。クライアントは神です!基本的には「.12」を達成したいと思います。 –