【问题标题】:Formatting a number by passing number of decimal places as a parameter in Scala通过在Scala中传递小数位数作为参数来格式化数字
【发布时间】:2017-04-26 15:41:06
【问题描述】:

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

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

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

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

但这会引发:

“%1”中缺少转换运算符;使用 %% 表示文字 %,使用 %n 表示 newline def roundBy(num: Double)(dp: Int): String = f"$num%1.${dp}f"

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

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

【问题讨论】:

    标签: scala formatting decimal rounding


    【解决方案1】:

    您可以改用.format(num)

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

    【讨论】:

    • 谢谢 - Federico 就可以了。知道了就这么简单!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多