js Number()会改变值的大小

tech2025-09-23  19

记录个bug

 

问题:

由于调用接口,后台需要传递一个数值,为120531784730937088,并且是integer类型,但是前端获取的值为字符串:"120531784730937088"

所以要将"120531784730937088"转换为number类型

var a = Number("120531784730937088")

打印a发现失去精度了,值为120531784730937090

 

原因:

js的number类型有个最大值(安全值)。即2的53次方,为9007199254740992。如果超过这个值,那么js会出现不精确的问题。这个值为16位。

 

解决:(3种方式)

1. 后端改成接收字符串类型

2.控制值的长度

3.后端加个字符串a去映射这个number,然后传递a给后端

最新回复(0)