项目小记---后端传值和前端接收到的值不一致

     在写完项目做测试时,发现前端接收的值,在preview查看时就不一致了,比如后端传值是9012108805013512,而前端接收到的是9012108805013511或者9012108805013513,对,就是多了1或者少了1 ,

    后来才发现,js能表示的浮点数的最大值是正负1.7976931348623157乘以10的308次方,其最小所能表示的小数为正负5乘以10的负324次方。但js能够表示整数的范围是正负数的绝对值都不能大于2^53,也就是正负数的绝对值都不能大于9007199254740992,这个数是16位,超过16位的整数就不能精确表示了

  Math.pow(2,53)   9007199254740992

  Math.pow(2, 53) === Math.pow(2, 53) + 1000;    // true

       解决方法:1.有个json-bigint的库可以解决这个问题,

                          2.也可以让后端传id或其他超长值时采用字符串的方式来传

说是两种,但是实测其实差不多,在项目刚起步时可以改,但已成熟的项目有一堆地方要改。。。

或许有更好的解决方式呢。。?

闭眼打键盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值