0

合計7桁のみで、数値の左側を優先するDecimalFormatを作成するにはどうすればよいですか。

例:1234.5678は1234.567に変換されます1.2345678は1.234567に変換されます1234567.8は1234567に変換されます

4

2 に答える 2

2

DecimalFormatでこの種のフォーマットを行うとは思いませんが、文字列操作を実行します

double d = 1234567.8;
System.out.println(new StringBuilder()
     .append(d).substring(0, 8)
     .replaceAll("\\.$", "") // to remove last decimal
     .toString());
于 2012-06-20T20:25:04.583 に答える
2

DecimalFormatはあなたが望むことをすることができませんが、これはもっと文字列の質問だと思います。フォーマットされた小数を取得したら、次の操作を実行できます。

String number = "123.45678"; // output from decimal format

number = number.substring(0, 7 + (number.contains(".") ? 1 : 0)).replaceAll("\\.$", "");

これにより、文字列の長さが7に切り捨てられます。小数点が見つかった場合は、8に切り捨てられます(その後、末尾の小数点が削除されます)。これは必要なことです。

ここにいくつかのテストコードがあります:

private static String format(String number) {
    return number.substring(0, 7 + (number.contains(".") ? 1 : 0)).replaceAll("\\.$", "");
}

public static void main(String[] args) {
    System.out.println(format("1234567"));
    System.out.println(format("1.2345678"));
    System.out.println(format("1234.5678"));
    System.out.println(format("1234567.8"));
    System.out.println(format(".12345678"));
}

出力:

1234567
1.234567
1234.567
1234567

    .1234567

于 2012-06-20T20:17:05.207 に答える