通过在Scala中传递小数位数作为参数来格式化数字
Posted
技术标签:
【中文标题】通过在Scala中传递小数位数作为参数来格式化数字【英文标题】:Formatting a number by passing number of decimal places as a parameter in 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.$dpf"
但这会引发:
“%1”中缺少转换运算符;使用 %% 表示文字 %,使用 %n 表示 newline def roundBy(num: Double)(dp: Int): String = f"$num%1.$dpf"
我知道在使用 interpolators 时我不必在引用引号内的值时使用花括号,但当然这只会留下f"$num%1.$dpf"
,我会误以为尝试使用尚未声明的值,即$dpf
我确信这是可以通过这种方式实现的,但我缺乏语法,所以我希望有一个简单的解决方法。谢谢
【问题讨论】:
【参考方案1】:您可以改用.format(num)
:
def roundBy(num: Double)(dp: Int): String = s"%1.$dpf".format(num)
【讨论】:
谢谢 - Federico 就可以了。知道了就这么简单!以上是关于通过在Scala中传递小数位数作为参数来格式化数字的主要内容,如果未能解决你的问题,请参考以下文章