js为什么会对多位数进行处理

js通过动态创建dom并添加click方法,带入实参数传递,传递到方法里,有个参数位数为17位,传递到方法里面发生了改变,最后一位变为了零

测试了好多次,发现只要超过十六位,最后一位都会被处理

例如

传递的参数为 46186703425110016
接收到的参数为 46186703425110010
渲染后dehtml:
<button onclick="sendPaperMail(`46186703425110016`,this)" class="outlined-btn-small outlined-                        btn-blue">发送</button>
方法里把结果打印为 46186703425110010### 问题描述

阅读 1.4k
3 个回答

要不你不用数字模式,而是用字符串,就不会出现吃掉字符问题。

js超大整数溢出
因为所有的数字都需要转换为二进制,而转换完成后的二进制再使用科学计数法,从而存储到内存单元中,因此我们知道M的长度决定了可以表示的数字的范围。

M固定长度是52位,再加上省略的一位,最多可以表示的数是 2^53 - 1 = 9007199254740991, 所以范围是-9007199254740991 ~ 9007199254740991
链接描述

推荐问题
宣传栏