如何在spray.json中设置JsNumber输出的精度?

时间:2014-11-27 14:31:52

标签: spray-json

我使用的数据具有固定的5位精度。我希望在生成JsNumber时强制执行此操作,以便浮点不准确性不会产生任何.123450000000000001输出。

这可能吗?我还没有找到办法做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以定义自定义JsonWriter来执行此操作(在您的协议中或具有更高优先级隐式范围的任何其他位置):

implicit object RoundedDoubleJsonWriter extends JsonWriter[Double] {
  def write(d: Double) =
    JsNumber(BigDecimal(d).setScale(4, BigDecimal.RoundingMode.HALF_UP)
}

将舍入模式/方法更改为品味。