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

时间:2017-04-26 15:41:06

标签: scala formatting decimal rounding

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

var result = !ListB.Except(ListA).Any();

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

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

但是这引发了:

  

'%1'中缺少转换运算符;使用%%表示文字%,%n表示   换行def roundBy(num:Double)(dp:Int):String =   F" $ NUM%1 $ {DP} F"

我知道在使用插补器时,在引用引号内的值时我不必使用花括号,但当然只会离开 def roundBy(num: Double)(dp: Int): String = f"$num%1.${dp}f" 而我会错误地试图使用尚未声明的值,即f"$num%1.$dpf"

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

1 个答案:

答案 0 :(得分:1)

您可以改为使用.format(num)

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