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

通过在Scala中将小数位数作为参数传递来格式化数字,scala,formatting,decimal,rounding,Scala,Formatting,Decimal,Rounding,(在Scala中)我一直在尝试创建一个函数,将Double转换为一定数量的小数点。如果我希望它将字符串返回到小数点后2位,我会这样做: def roundBy2(num: Double): String = f"$num%1.2f" 但如果我想通过参数传递小数位数,我的第一次尝试可能是: def roundBy(num: Double)(dp: Int): String = f"$num%1.${dp}f" 但这让人联想到: “%1”中缺少转换运算符;使用%%表示文字%,%n

(在Scala中)我一直在尝试创建一个函数,将Double转换为一定数量的小数点。如果我希望它将字符串返回到小数点后2位,我会这样做:

    def roundBy2(num: Double): String = f"$num%1.2f"
但如果我想通过参数传递小数位数,我的第一次尝试可能是:

    def roundBy(num: Double)(dp: Int): String = f"$num%1.${dp}f"
但这让人联想到:

“%1”中缺少转换运算符;使用%%表示文字%,%n表示文字 换行定义舍入(num:Double)(dp:Int):字符串= f“$num%1.${dp}f”

我知道,当使用插值器时,在引用引用引号内的值时,我不必使用大括号,但这会留下
f“$num%1.$dpf”
,我会被误认为试图使用未声明的值,即
$dpf


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

您只需使用
.format(num)
即可:

def roundBy(num:Double)(dp:Int):String=s“%1.${dp}f”。格式(num)

谢谢-这样就可以了。你知道的时候就这么简单!