[英]Formatting floating point numbers in SLF4J
我想用 SLF4J 格式化我的双打和浮动到一定数量的小数位。
基本上,我在 SLF4J 中寻找等效于 Java 的String.format("%.2f", floatValue)
。
通读了 SLF4J 的文档并在谷歌上搜索后,我找不到它是否具有该功能的提示。
我正在使用slf4j-api:1.7.6
和slf4j-jdk14:1.7.6
任何帮助深表感谢。
我假设您指的是 SLF4J 的扩展参数约定,例如:
float f;
...
logger.debug("My number is {}", f);
所以,答案是否定的。 从 SLF4J 1.7.7 开始,您要求做的事情是不可能的,因为 SLF4J 的扩展算法不允许自定义渲染器(例如通过 Log4J 提供的渲染器)。
不过,似乎值得提出功能要求。
编辑:
好吧,出于性能考虑,“仅支持”
{}
,当前的格式化实现优于 String.format() 10 倍。 http://www.slf4j.org/faq.html#logging_performance所以不太可能改变
( 来源)
导致创建临时对象的有点丑陋的解决方案可能是这样的
public class DelayedFormatter {
public static Object format(String format, Object... args) {
return new Object() {
@Override
public String toString() {
return String.format(format, args);
}
};
}
}
进而
import static DelayedFormatter.format;
...
logger.debug("v = {}", format("%.03f", v));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.