我目前正在尝试通过localstorage在我的网站上存储数据,例如我是这样做的:
localStorage.setItem("vue",10206726906969851)
当我想要获得价值时,我得到了这个结果:
localStorage.getItem("vue")
-> "10206726906969852"
为什么价值会发生变化?提前感谢您的帮助
答案 0 :(得分:0)
JavaScript与数字的精确度并不是史诗般的。一个例子:
.2 + .2 = .4
但
.2 + .2 + .2 = 0.6000000000000001
您使用的数字太大,JS无法保持良好的精确度。在控制台中记录以下内容,您将看到我的意思。
10206726906969851 > Number.MAX_SAFE_INTEGER // returns true
您使用的数字太大了。我过去经历过这个。服务器将为我提供适合Java的数字,但对于JavaScript来说太大了。所以...... JS会搞砸他们。修复的唯一方法是获得JS不会禁止的较短数字。