Kotlin extend/override Double.toString 可以产生更少的小数位吗?
Possible to Kotlin extend/override Double.toString to produce less decimal places?
我已经有技巧了:
/** Shorter round for the logs */
val Double.str: String
get() = "%.3f".format(this)
但这必须手动插入到我的所有 LOG.info { "It went ${distance.str}" }
语句中。我希望能够在全局范围内设置(浮点数和小数点)有效数字。有什么办法可以做到这一点吗?
似乎 class 扩展函数会有帮助:
fun Double.str(decPlaces: Int): String = "%.${decPlaces}f".format(this)
并像
一样使用它
LOG.info { "It went ${distance.str(3)}" }
不,没有办法这样做。相反,您可以重新定义 LOG
方法,但它们可能需要将部分作为单独的参数(即 LOG.info("It went {}", distance)
或 LOG.info { myformat("It went {}", distance) }
)。您需要决定这是否是您想要的权衡。
我认为 LOG.info { "It went ${distance}" }
起作用的唯一方法是使用正则表达式在内插字符串中查找数字并替换它们。这是一个非常丑陋的 hack,而且相对较慢。
我已经有技巧了:
/** Shorter round for the logs */
val Double.str: String
get() = "%.3f".format(this)
但这必须手动插入到我的所有 LOG.info { "It went ${distance.str}" }
语句中。我希望能够在全局范围内设置(浮点数和小数点)有效数字。有什么办法可以做到这一点吗?
似乎 class 扩展函数会有帮助:
fun Double.str(decPlaces: Int): String = "%.${decPlaces}f".format(this)
并像
一样使用它LOG.info { "It went ${distance.str(3)}" }
不,没有办法这样做。相反,您可以重新定义 LOG
方法,但它们可能需要将部分作为单独的参数(即 LOG.info("It went {}", distance)
或 LOG.info { myformat("It went {}", distance) }
)。您需要决定这是否是您想要的权衡。
我认为 LOG.info { "It went ${distance}" }
起作用的唯一方法是使用正则表达式在内插字符串中查找数字并替换它们。这是一个非常丑陋的 hack,而且相对较慢。