Java中后端Bigdecimal传值到前端精度丢失问题
在接⼿开发⼀个需求(数据库字段由两位⼩数修改为保留三位⼩数,数据库中字段类型为decimal(18,2))时,发现Bigdecimal精度丢失。
bigdecimal格式化两位小数  1、原本现有代码实体类中定义的字段是Double,我直接修改了数据库字段类型为decimal(18,3),然后在测试时发现第三位⼩数在前端传值到后端映射参数值的时候精度丢失。
  2、修改实体类中字段类型为Bigdecimal,此时在前端传到后端的值精度不丢失,并且数据库中保存的值也正确,但是在前端查询反显时精度⼜丢失了。经过分析,最后得出的结论是前端js解析⼩数是⽤的double解析的,精度会有损失。
    最后解决⽅法是在实体类这个字段定义的时候加上注解:@JsonSerialize(using = ToStringSerializer.class),这样传到前端的时候就会以String类型解析,不会再以double解析,就不会丢失精度。
  还有⼀种就是直接在实体类中定义为String类型,不会丢失精度,只是这种⽅式在涉及到计算的时候要重新转换类型。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。