que punto programacion operaciones numero flotante float ejemplos java logging slf4j

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 )