java - punto - Formateo de números de coma flotante en SLF4J
punto flotante plc (2)
Me gustaría formatear mis dobles y flotantes a un cierto número de decimales con SLF4J.
Básicamente, estoy buscando el equivalente de String.format("%.2f", floatValue)
de Java String.format("%.2f", floatValue)
en SLF4J.
Después de leer la documentación de SLF4J y buscar en Google, no pude encontrar una pista sobre si tiene esa característica.
Estoy usando slf4j-api:1.7.6
y slf4j-jdk14:1.7.6
Cualquier ayuda es muy apreciada.
Una solución algo fea que incurre en la creación de un objeto temporal podría ser esta
public class DelayedFormatter{
String format; Object[] args;
public DelayedFormatter(String format, Object... args){
this.format = format; this.args = args;
}
public static DelayedFormatter format(String format, Object... args){
return new DelayedFormatter(format, args);
}
@Override public String toString(){
return String.format(format, args);
}
}
y entonces
import static DelayedFormatter.format;
...
logger.debug("v = {}", format("%.03f", v));
Supongo que te estás refiriendo a la convención de SLF4J de ampliar los parámetros, por ejemplo:
float f;
...
logger.debug("My number is {}", f);
Por tanto, la respuesta es no. A partir de SLF4J 1.7.7, lo que está pidiendo hacer es imposible ya que el algoritmo de expansión de SLF4J no permite renderizadores personalizados (como el disponible a través de Log4J).
Sin embargo, parece digno de una solicitud de función.
EDITAR :
Bueno,
{}
es "solo compatible" para consideraciones de rendimiento, la implementación de formato actual supera a String.format () en 10 ocasiones. http://www.slf4j.org/faq.html#logging_performance, por lo que es poco probable que cambie
( fuente )