使用 Json.toJson 时 Float 的值不正确

Incorect value for Float when using Json.toJson

我不知道这是否是 Play 中的错误!或者如果有其他原因,但这是正在发生的事情。

我有一个对象 (MyObject),它有一个 Float 类型的成员变量。

public class MyObject {
    private Float data;
}

当使用 Json.toJson()(来自 play.libs.Json)发送包含 MyObject 项的响应时,值会被打乱。

举个例子:

MyObject myObj = new MyObj();
myObj.setData(3.2f);

JSON 字符串:

{
    "data": 3.200000047683716
}

如果我将数据类型更改为 Double,一切正常。

我怀疑这可能是因为浮点精度与双精度以及 JSON.toJson() 如何处理 Float 对象,但是,在调试中,myObj.data3.2

是的,问题是3.2不能用Float准确表示。它实际上也不可能是 Double,但错误足够小以至于它被丢弃了。

方便的参考资料: