2

私はたくさん検索しましたが、何も役に立ちませんでした:( 12.090.129.019.201.920.192.091.029.102.901.920.192.019.201.920 (ポルトガル語のグループ区切り記号: .) を BigInteger 値に変換する必要があるとします。その変換を行う方法は? NumberFormat、DecimalFormat、何も機能しないか、正しい方法ではありませんでした:(

4

2 に答える 2

9

NumberFormatポルトガル語 のインスタンスを取得してLocaleから、parseその番号を取得します。これは、ロケール固有の小数点記号も処理します。

NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt", "PT"));
DecimalFormat df = (DecimalFormat)nf;
df.setParseBigDecimal(true);
BigDecimal decimal = (BigDecimal)df.parse("12.090.129.019.201.920.192.091.029.102.901.920.192.019.201.920");
BigInteger big = decimal.toBigInteger();

デモ

于 2012-08-23T23:51:03.883 に答える
1

代わりにセパレーターを削除する方が簡単ではないでしょうか? Java は内部的にそれらに注意を払いません。

String num = "2.090.129.019.201.920.192.091.029.102.901.920.192.019.201.920";
BigInteger bigInt = new BigInteger(num.replaceAll("\\.", ""));

戻す必要がある場合は、 NumberFormat.format() を使用して値を戻すことができます。

于 2012-08-23T23:51:16.013 に答える