繁体   English   中英

在 SLF4J 中格式化浮点数

[英]Formatting floating point numbers in SLF4J

我想用 SLF4J 格式化我的双打和浮动到一定数量的小数位。

基本上,我在 SLF4J 中寻找等效于 Java 的String.format("%.2f", floatValue)

通读了 SLF4J 的文档并在谷歌上搜索后,我找不到它是否具有该功能的提示。

我正在使用slf4j-api:1.7.6slf4j-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM