合計7桁のみで、数値の左側を優先するDecimalFormatを作成するにはどうすればよいですか。
例:1234.5678は1234.567に変換されます1.2345678は1.234567に変換されます1234567.8は1234567に変換されます
合計7桁のみで、数値の左側を優先するDecimalFormatを作成するにはどうすればよいですか。
例:1234.5678は1234.567に変換されます1.2345678は1.234567に変換されます1234567.8は1234567に変換されます
DecimalFormatでこの種のフォーマットを行うとは思いませんが、文字列操作を実行します
double d = 1234567.8;
System.out.println(new StringBuilder()
.append(d).substring(0, 8)
.replaceAll("\\.$", "") // to remove last decimal
.toString());
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