java android printf string.format

java equivalente a printf("%*.*f")



android string.format (4)

En C, la declaración printf () permite que se proporcionen las longitudes de precisión en la lista de parámetros.

printf("%*.*f", 7, 3, floatValue);

donde los asteriscos se reemplazan con los valores primero y segundo, respectivamente.

Estoy buscando un equivalente en Android / Java; String.format () lanza una excepción.

EDIT: Gracias, @Tenner; de hecho funciona


Es como esto...

%AFWPdatatype

A - Número de argumentos

F - Banderas

W - Ancho

P - Precision

String.format("%.1f",float_Val);


Podrías formatear el formato:

String f = String.format("%%%d.%df", 7, 3); System.out.println(f); System.out.format(f, 111.1111);

Esto dará como resultado:

%7.3f 111,111

También podrías usar un pequeño ayudante como este:

public static String deepFormatter(String format, Object[]... args) { String result = format; for (int i = 0; i != args.length; ++i) { result = String.format(result, args[i]); } return result; }

La siguiente llamada sería equivalente al código anterior y devolvería 111,111 .

deepFormatter("%%%d.%df", new Object[] {7, 3}, new Object[] {111.1111});

No es tan bonito como printf, y el formato de entrada se puede saturar, pero se puede hacer mucho más con él.


yo suelo

int places = 7; int decimals = 3; String.format("%" + places + "." + decimals + "f", floatValue);

Un poco feo (y la concatenación de cadenas hace que no funcione bien), pero funciona.


System.out.print(String.format("%.1f",floatValue));

Esto imprime el floatValue con 1 decimal de precisión.