今天在和后端联调列表页的时候,发现有一个参数id的值始终查询不到数据,于是我把参数给到后端,让他在数据库查一下,结果告诉我数据库没有这个id,问我搁哪拿的这个数据,我说我还能哪儿去哪儿拿,当然是从你返回的数据里拿的,然后他把数据库里的id截图给我,我看了一眼,发现最后几位数好像自动四舍五入了
于是我拿着这个发现去给后端battle,你看,你返回的有问题啊,过了一会儿,他回了句
后面查阅资料发现,JS 提供Number.MAX_SAFE_INTEGER常量来表⽰最⼤安全整数,Number.MAX_SAFE_INTEGER常量表⽰最⼩安全整数:
`Number.MAX_SAFE_INTEGER : 9007199254740991`
`Number.MIN_SAFE_INTEGER : -9007199254740991`
确切地说,JS中的Number类型只能安全地表⽰-9007199254740991 (-(2^53-1))和9007199254740991(2^53-1)之间的整数,任何超出此范围的整数值都可能失去精度。
解决方案:
方案一:string去代替number;
方案二:使用BigInt类型
**BigInt 是一种内置对象,它提供了一种方法来表示大于 2^53 - 1 的整数。这原本是 Javascript中可以用Number表示的最大数字。BigInt 可以表示任意大的整数。具体内容可移步MDN-BigInt
好了,今天的分享就到这里,智者不入爱河,建设美丽新中国!!!