[英]How to format 18 digit double to become 10 string character
double pdouble= 3.3603335204002837E12;
String pstart= Double.toString(pdouble).replace(".", "") .trim()
String.format("%10d", pstart);
System.out.println("pstart"+pstart);
我能知道為什么它不起作用嗎...
它顯示:
線程“main”中的異常
java.util.IllegalFormatConversionException: d != java.lang.String at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302) .I
希望任何人都可以提供幫助
%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
。
對於十進制數,需要使用“f”標志。
double pdouble= 3.3603335204002837E12;
System.out.println(String.format("%10f", pdouble));
這將打印一個最小長度為 10 個字符的字符串。
在此模式“%10f”中,寬度標志(例如 10)是最小字符數
寬度是要寫入輸出的最小字符數。 對於行分隔符轉換,寬度不適用; 如果提供,將拋出異常。
來自格式化程序java doc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.