js处理后端返回超过16位大数字方案(network中preview和response返回不一致)

后端返回的数据与前端console.log数据不一致问题(network中preview和response返回不一致)
在项目中偶尔会遇到后端返回的一大串数字,类似于订单编号(orderId),券ID(couponId)等等。有时候这些数字远超过十位、八位什么的;可能会有二十几位的一串数字。前端一般拿到数据是后面几位都是0。

一般这种情况是,精度丢失

精度丢失多出现于,后端使用的字段类型的精度与前端不一样。
前段时间遇到的couponId有十九位长的数字。前端拿到的值后面三位全是0。postman跑出来的是十九位的正常的,后三位非0,但是console.log()打印的结果后三位是0;由于console.log()是异步的,可能页面的某些逻辑影响到了结果。我在接口返回的最始地方alert了下,发现最后三位还是0,与实际的值不符合。

中间省略n个过程,直接到结果:

问了下后端用的哪种类型,后端说是用了long类型,long类型与javaScript中的长度是不一致的,Java中的long类型是JavaScript的好多倍。于是让后端将Long类型修改成string类型就解决了该问题

原文地址:https://www.cnblogs.com/shuihanxiao/p/14610395.html