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.