场景
在做订单业务时mysql中选择了bigint,java中使用long类型映射。订单长度19位,如1395005294286733314。但是在swagger中测试时每次返回的数据都是1395005294286733300,而我数据库中恰巧存在1395005294286733300这个值让我第一时间误判没有考虑到是精度损失的问题。使用postman请求接口却得到了正确结果。
解决
通过观察network中相应数据才终于恍然大悟并不是请求被过滤导致响应结果被更改,而是精度丢失导致后两位自动补0了。通过查阅发现确实如此因为我并没有使用string类型传值,js识别为number类型。而js中number的最大长度为17位所以出现了这种乌龙的情况,时刻提醒自己要夯实基础多留意细节问题。