繁体   English   中英

Java DecimalFormat出现问题

[英]Trouble with Java DecimalFormat

我将如何创建一个只能有七个数字的DecimalFormat,并且也偏爱数字的左侧。

例如:1234.5678将转换为1234.567 1.2345678将转换为1.234567 1234567.8将转换为1234567

DecimalFormat无法满足您的要求,但我认为这更多是一个String问题。 格式化十进制格式后,可以执行以下操作:

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

0.1234567

我不认为您使用DecimalFormat进行这种格式化,但是您执行String操作

double d = 1234567.8;
System.out.println(new StringBuilder()
     .append(d).substring(0, 8)
     .replaceAll("\\.$", "") // to remove last decimal
     .toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM