Java将带有基本浮点字段的对象序列化为Json
我有一个如下所示的API:Java将带有基本浮点字段的对象序列化为Json,java,floating-point,jackson,Java,Floating Point,Jackson,我有一个如下所示的API: @GetMapping("/floattest") @ResponseBody public ApiResult getFloatTest() { ApiResult result = new ApiResult(); ApiObject test = new ApiObject(81684436f, 74258578f, 7425858f); result.setData(test); return result; } public
@GetMapping("/floattest")
@ResponseBody
public ApiResult getFloatTest() {
ApiResult result = new ApiResult();
ApiObject test = new ApiObject(81684436f, 74258578f, 7425858f);
result.setData(test);
return result;
}
public class BalanceDetail {
private float a;
private float b;
private float c;
}
API调用返回:
{
"data": {
"a": 81684432,
"b": 74258576,
"c": 7425858
}
}
我希望您能在没有任何警告的情况下,逐步向客户解释如何将这些值转换为完全不同的值。这不是Jackson的问题 如果运行此命令:
public class Main {
public static void main(String[] args) {
System.out.println(81684436f);
}
}
您将获得8.1684432E7
因此,这种行为背后的原因是浮点运算的工作原理。
你可以阅读更多关于