通过在 Scala 中将小数位数作为参数传递来格式化数字

Formatting a number by passing number of decimal places as a parameter in Scala

(在 Scala 中)我一直在尝试创建一个函数,将 Double 转换为一定数量的小数点。如果我想让它 return 一个 String 到小数点后两位,我会这样做:

    def roundBy2(num: Double): String = f"$num%1.2f"

但是如果我想通过参数传递小数位数,我的第一次尝试可能是:

    def roundBy(num: Double)(dp: Int): String = f"$num%1.${dp}f"

但这会引发:

Missing conversion operator in '%1'; use %% for literal %, %n for newline def roundBy(num: Double)(dp: Int): String = f"$num%1.${dp}f"

我知道在使用 interpolators 时,在引用引号内的值时我不必使用大括号,当然那样只会留下 f"$num%1.$dpf" 和我会被误认为尝试使用尚未声明的值,即 $dpf

我确信这可以通过这种方式实现,但我缺少语法,所以我希望有一个简单的修复方法。谢谢

您可以只使用 .format(num) 来代替:

def roundBy(num: Double)(dp: Int): String = s"%1.${dp}f".format(num)