使用 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.data
是 3.2
。
是的,问题是3.2不能用Float
准确表示。它实际上也不可能是 Double
,但错误足够小以至于它被丢弃了。
方便的参考资料:
我不知道这是否是 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.data
是 3.2
。
是的,问题是3.2不能用Float
准确表示。它实际上也不可能是 Double
,但错误足够小以至于它被丢弃了。
方便的参考资料: