double pdouble= 3.3603335204002837E12;

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

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

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

¿Puedo saber por qué no funciona ...
Muestra esto:

Excepción en el hilo "principal"
java.util.IllegalFormatConversionException: d! = java.lang.String en java.util.Formatter $ FormatSpecifier.failConversion (Formatter.java:4302) .YO

Espero que alguien pueda ayudar

1
ranjithh 16 oct. 2018 a las 15:57

2 respuestas

La mejor respuesta

%d es para int. Como pstart es una cadena, use b o s.

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

Salida

33603335204002837E12

Lea formato de cadena de Java ()


Sin embargo, si solo necesita los primeros 10 dígitos de su número, intente usar DecimalFormat

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

Salida

3360333520400

Esto también agregará 0 s iniciales si el número tiene menos de 10 dígitos.

1
Roshana Pitigala 16 oct. 2018 a las 13:22

Para números decimales, es necesario utilizar la bandera "f".

double pdouble= 3.3603335204002837E12;

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

Esto imprimirá una cadena con una longitud mínima de 10 caracteres.

En este patrón "% 10f", la marca de ancho (por ejemplo, 10) es el número mínimo de caracteres

El ancho es el número mínimo de caracteres que se escribirán en la salida. Para la conversión del separador de línea, el ancho no es aplicable; si se proporciona, se lanzará una excepción.

De Formateador java doc

0
user10386912user10386912 16 oct. 2018 a las 13:19