2017-12-08 57 views

答えて

0

あなたが探しているのはNumberFormatのようです。このスニペットは、Oracleのマニュアルを参照し

static public void displayNumber(Locale currentLocale) { 

Integer quantity = new Integer(123456); 
Double amount = new Double(345987.246); 
NumberFormat numberFormatter; 
String quantityOut; 
String amountOut; 

numberFormatter = NumberFormat.getNumberInstance(currentLocale); 
quantityOut = numberFormatter.format(quantity); 
amountOut = numberFormatter.format(amount); 
System.out.println(quantityOut + " " + currentLocale.toString()); 
System.out.println(amountOut + " " + currentLocale.toString()); 
} 

この例では、次のように出力します。

123 456 fr_FRの

345 987246 fr_FRの

123.456 de_DEの

345.987,246 de_DEの

123,456はen_US 3:同じ番号のフォーマットは、ロケールにどのように変化するかは示してい

45,987.246en_US

ここコンテンツから提示されたことをリンクです:1つのロケールから別のフォーマットされた数値文字列を変換するために

https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html


、あなたは文字列が生成されたロケールを知っている必要がありますが、 。そこからNumberFormat.parseを使用して、文字列をNumberに変換することができます。次に、ターゲットロケールを使用して別のNumberFormatを作成し、.formatメソッドを使用して文字列表現を変更します。

static public String displayNumber(String startValue, Locale startLocale, Locale endLocale) throws ParseException { 
    NumberFormat parser = NumberFormat.getNumberInstance(startLocale); 
    NumberFormat formatter = NumberFormat.getNumberInstance(endLocale); 

    Number rawNumber = parser.parse(startValue); 

    return formatter.format(rawNumber); 
} 
+0

私はこの以前に見ていたが、私はに走った問題は、私の入力はen_USロケールとそうでない文字列「123.345,67」していたということです私は最初にその特定のロケールで有効なdoubleに文字列を変換する方法が必要でした。それは私が立ち往生したところです。 –

+0

NumberFormatがこの目的にどのように役立つかを示す応答が更新されました。文字列の元のロケールがわからない場合、これは機能しません。 – Jeremiah

+0

ありがとうございました@Jeremiah、それは私が探していたものでしたが、今私はそれを使用することができます...ありがとうございました –

関連する問題