2016-05-06 13 views
0

フィリピンの数値から倍の値を取得しようとしています。 "2,3456"。java.text.ParseException:解析できない数値: "2,3456"(オフセット5)

これは私がやろうとしている方法です。

try { 
    return NumberFormat.getInstance(new Locale("en","PH")).parse("2,3456").doubleValue(); 
} catch (ParseException e) { 
    e.printStackTrace(); 

} 

私はフィリピンのために解析できない例外を取得していますが、私は文字列で、インドネシアのロケール「2.3456」とインドネシアのために同じコードを使用している場合、それが正常に動作しています。

フィリピンロケールの問題は何ですか?

+0

ドゥフィリピンは小数点として "" を使用?そうでない場合は、 "。"代わりに。 – Tom

+0

@Tom "、"は1000人のセパレータです。私はちょうど私が受けている文字列を解析しようとしている – Beginner

+1

それはうまくいくようです:http://ideone.com/okLW5W – assylias

答えて

0

フィリピンでは小数点区切り記号としてドットを使用し、桁区切り記号としてカンマを使用しています。しかし、2,3456は、パーサーが桁区切り文字の位置について経過しているため、フィリピンのロケールで有効です。

も参照してくださいhttps://en.wikipedia.org/wiki/Decimal_mark

+0

これは適切ではありません。なぜなら、 '' 2,3456 "は正しく解析できます(' '2,3,4,56" ')。とにかく問題ではないので、パーサーは千セパレータの位置について厳密ではありません。結果の数字は変更されません。 – Tom

+0

カンマが別の場所にある場合でも、正常に動作するはずです – Beginner

関連する問題