5

私は一連のBigDecimal番号を持っています(例:) 123456.78。にカンマを追加して、次のように表示したいので123,456.78、文字列に変換して次のコードを使用しました。

private static String insertCommas(String str) {
    if(str.length() < 4){
        return str;
    }

    return insertCommas(str.substring(0, str.length() - 3)) + 
        "," +         
        str.substring(str.length() - 3, str.length());
}

それをするために。問題は、実行するinsertCommas(str)と印刷されること123,456,.78です。小数点の前にカンマが置かれないようにする方法がわかりません。

-

そしてもう一つ、それは大小の数で機能しなければならないので、私はもっと単純なものの代わりに上記のコードを使用しました。

私もDecimalFormat("#,##0.00")同様のタイプを試しましたが、数値が特定のポイントに達すると、ゼロに置き換えられ、数値に関する情報が失われます。

ヘルプ?

4

4 に答える 4

9

これを行う簡単な方法があります。あなたはただ使用する必要がありますSimpleDecimalFormat

private static String insertCommas(BigDecimal number) {
  // for your case use this pattern -> #,##0.00
  DecimalFormat df = new DecimalFormat("#,##0.00");
  return df.format(number);
}

private static String insertCommas(String number) {
  return insertCommas(new BigDecimal(number));
}

ここで新しいパターンなどを学ぶことができます:DecimalFormat API

お役に立てれば :)

于 2012-10-28T15:50:40.927 に答える
0

JavaのFormattingNumericPrintOutputチュートリアルをご覧ください。これにより、印刷中または文字列への変換中に数値をフォーマットする方法がわかります。

于 2012-10-28T15:47:17.883 に答える
0

関数を機能させることを主張する場合は、これを使用できます。

private static String insertCommas(String str) {
    if(str.length() < 4){
        return str;
    }

    String[] tokens = str.split("[.]");
    return insertCommas(tokens[0].substring(0, tokens[0].length() - 3)) +
        "," +
        str.substring(tokens[0].length() - 3, tokens[0].length()) +
        ((tokens.length > 1) ? ("." + tokens[1]) : "");
}
于 2012-10-28T16:00:10.460 に答える
0

パーティーには少し遅れますが、小数を文字列に変換すると、単純なforループでかなり簡単にコンマを挿入できます。

for (int i=amount.indexOf('.')-3; i > 0; i -= 3){
String firstPart = amount.substring(0,i);
String lastPart = amount.substring(i);
amount = firstPart + ","+ lastPart;
}

お役に立てば幸いです。

于 2013-11-01T13:10:07.680 に答える