1、问题
今天遇到个神奇的问题,后端传给前端值为xxxxxxxxxxxxxx0001(一共18位,最后一位为1),经过前端处理再传到后端时,接收到的值为xxxxxxxxxxxxxx0000(还是18位,但是最后一位由1变成了0),就很奇怪,what???
2、原因
查了挺多资料发现
原来是JS数字最长为16位,超过部分会自动变成0,xxxxxxxxxxxxxx0001是18位,所以最后两位自动变为了0
3、办法
解决方法也很简单,向后端传数值时,将其变为String类型的即可。
原来的前端代码
<input onclick="function(${longNum})" type="button" value="按钮"/>
修改后
<input onclick="function('${longNum}')" type="button" value="按钮"/>
成功解决
本文介绍了一个关于JavaScript处理长数字时出现的精度丢失问题,当数字长度超过16位时,JavaScript会自动将超出部分变为0。文章详细解释了这一现象的原因,并提供了解决方案:将数字作为字符串类型传递。

750

被折叠的 条评论
为什么被折叠?



