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) 我
希望任何人都可以帮助
答案 0 :(得分:1)
%d
用于int
。由于pstart
是字符串,因此请使用b
或s
。
String.format("%10s", pstart);
输出
33603335204002837E12
但是,如果您只需要数字的前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文档