具有可变小数精度的双精度格式
Format double with variable decimal precision
我知道在 Scala.js 中(不能使用 java.text.DecimalFormat
)我可以这样写:
val number = 1.2345
println(f"$x%.2f") // "1.23"
然而,这似乎不起作用:
val decimalPlaces = 2
println(f"$x%.${decimalPlaces}f")
// [error] Missing conversion operator in '%'; use %% for literal %, %n for newline f"$x%.${decimalPlaces}f"
// also doesn't work: (f"$x%." + decimalPlaces + "f").toFloat
如何实现可变小数精度?
这个有效
val number = 1.2345
val decimalPlaces = 2
println(("%." + decimalPlaces + "f").format(number))
format
隐式调用了 StringLike
。
我想它不起作用的原因是表达式中没有任何地方:
s"$number%.$decimalPlacesf" # DOESN'T WORK
我们正在提供如何解决变量的顺序。
你需要人为强制执行。类似于@nattyddubbs 的回答:
val number = 1.2345
val decimalPlaces = 3
val format = s"%.${decimalPlaces}f"
println(format.format(number)) # 1.235
我知道在 Scala.js 中(不能使用 java.text.DecimalFormat
)我可以这样写:
val number = 1.2345
println(f"$x%.2f") // "1.23"
然而,这似乎不起作用:
val decimalPlaces = 2
println(f"$x%.${decimalPlaces}f")
// [error] Missing conversion operator in '%'; use %% for literal %, %n for newline f"$x%.${decimalPlaces}f"
// also doesn't work: (f"$x%." + decimalPlaces + "f").toFloat
如何实现可变小数精度?
这个有效
val number = 1.2345
val decimalPlaces = 2
println(("%." + decimalPlaces + "f").format(number))
format
隐式调用了 StringLike
。
我想它不起作用的原因是表达式中没有任何地方:
s"$number%.$decimalPlacesf" # DOESN'T WORK
我们正在提供如何解决变量的顺序。
你需要人为强制执行。类似于@nattyddubbs 的回答:
val number = 1.2345
val decimalPlaces = 3
val format = s"%.${decimalPlaces}f"
println(format.format(number)) # 1.235