使用可变的十进制精度格式化双精度格式

时间:2019-01-14 13:43:49

标签: scala scala.js

我知道在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

如何获得可变的十进制精度?

2 个答案:

答案 0 :(得分:2)

这有效

val number = 1.2345
val decimalPlaces = 2
println(("%." + decimalPlaces + "f").format(number))

StringLike有一个对format的隐式调用。

答案 1 :(得分:0)

我认为它不起作用的原因是表达式中无处:

newIntent

我们提供了有关如何解析变量的顺序。

您需要人为强制执行它。与@nattyddubbs的答案类似:


const resetIntent = (handlerInput) => {
  const intent = {
    name : 'myIntentName',
    confirmationStatus: 'NONE',
    slots : {
      slotOne: {
        name: 'slotOne',
        confirmationStatus: 'NONE'
      }
    }
  }

  return handlerInput.responseBuilder
    .addDelegateDirective(intent)
    .getResponse();

}