0

我将如何创建一个总共只有七位数字的 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 回答