如何将18位数的双精度格式转换为10字符串字符

时间:2018-10-16 12:57:12

标签: java number-formatting trim

double pdouble= 3.3603335204002837E12;

String pstart= Double.toString(pdouble).replace(".", "") .trim()

String.format("%10d", pstart);

System.out.println("pstart"+pstart);

我能知道为什么它不起作用吗...
它显示如下:

  

线程“主”中的异常
        java.util.IllegalFormatConversionException:d!= java.lang.String在   java.util.Formatter $ FormatSpecifier.failConversion(Formatter.java:4302)   我

希望任何人都可以帮助

2 个答案:

答案 0 :(得分:1)

%d用于int。由于pstart是字符串,因此请使用bs

String.format("%10s", pstart);

输出

33603335204002837E12

阅读Java String format()


但是,如果您只需要数字的前10位,请尝试使用DecimalFormat

DecimalFormat d = new DecimalFormat("0000000000");
String number = d.format(pdouble);

输出

3360333520400

如果数字少于10位,这还将添加前导0

答案 1 :(得分:0)

对于十进制数字,需要使用“ f”标志。

double pdouble= 3.3603335204002837E12;

System.out.println(String.format("%10f", pdouble));

这将打印至少10个字符的字符串。

在此模式“%10f”中,宽度标志(例如10)是最小字符数

  

宽度是要写入输出的最小字符数。对于行分隔符转换,宽度不适用;如果提供,将引发异常。

来自Formatter Java文档