Как отформатировать 18-значный двойной, чтобы стать 10-значный символ - PullRequest
0 голосов
/ 16 октября 2018
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

Надеюсь, что кто-нибудь может помочь

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Для десятичных чисел необходимо использовать флаг "f".

double pdouble= 3.3603335204002837E12;

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

Это напечатает строку с минимальной длиной 10 символов.

В этом шаблоне "% 10f"Флаг ширины (например, 10) - это минимальное количество символов

Ширина - это минимальное количество символов, которое записывается в вывод.Для преобразования разделителя строк ширина не применима;если это предусмотрено, будет выдано исключение.

из Форматер Java документ

0 голосов
/ 16 октября 2018

%d для int.Поскольку pstart является строкой, используйте b или s.

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

Вывод

33603335204002837E12

Чтение Формат строки Java ()


Однако, если вам нужны только первые 10 цифр от вашего номера, попробуйте использовать DecimalFormat

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

Выход

3360333520400

Это также добавит начальные 0 с, если номер меньше 10 цифр.

...