小心JS中数字精度损失
一、背景
昨日,有开发反应在edi的日志里发现一个异常现象:“JSON字符串反序列化后,数字值不对了”。类似如下:
1 | 反序化前: |
二、解决路径
- 通过日志的DevTool中查看请求数据的Response,发现是正常的;这个也通过直接查询es中的数据得到了认证。
- 由此判断后台的数据是正常的,大概率是由于前端JS格式化显示json时,在JS中损失了精度。
- 通过测试和查询资料确认JS中数字是通过IEEE-754 double-precision floating point存储的,类似Java中的double类型的存储方式,过大的数字会损失精度。