最近在弄申报的项目,里面有用户图像,当用户申报完成之后,发现用户图像回显不了? 经过排查,发现是图像的id 不对。通过查看接口返回的数据,id 确实是 1263427826913116160 ,为啥 js 自动转为 1263427826913116200 了呢?
复现
分析:
通过排查,这个图像id 是直接从接口中获取的,其他地方没有修改这个图像id 。 带着疑问问了下 gpt
这个问题是由于JavaScript中的数字表示精度问题造成的。JavaScript中的数字使用IEEE 754标准的64位浮点数表示,这意味着JavaScript中的数字最多只能精确到小数点后16位。
当你输入一个很大的整数1263427826913116160时,JavaScript会将其转换为最接近的浮点数表示,即1263427826913116200。这是因为64位浮点数无法完全精确地表示该整数,会产生一些舍入误差。
这种精度损失在处理非常大的整数时会比较明显。如果你需要精确地处理大整数,可以考虑使用专门的大数库,如BigInt或者第三方库如decimal.js。
总之,这是JavaScript处理大整数时的一个局限性,需要开发者注意
解决
于是我将 数字1263427826913116160 转为字符串 '1263427826913116160 ',就解决了这个问题。