通过在 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)
(在 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)