本地存储的Javascript问题(值本身发生变化)

本地存储的Javascript问题(值本身发生变化),javascript,local-storage,Javascript,Local Storage,我目前正在尝试通过本地存储在我的网站上存储数据,例如,如果我这样做: localStorage.setItem("vue",10206726906969851) 当我想要返回值时,我得到以下结果: localStorage.getItem("vue") -> "10206726906969852" 那么,为什么值会发生变化呢?提前感谢您的帮助JavaScript的数字精度不高。例如: .2 + .2 = .4 但是 您使用的数字太大,JS无法保持良好的精度。在你的控制台中记录以下内容

我目前正在尝试通过本地存储在我的网站上存储数据,例如,如果我这样做:

localStorage.setItem("vue",10206726906969851)
当我想要返回值时,我得到以下结果:

localStorage.getItem("vue")
-> "10206726906969852"

那么,为什么值会发生变化呢?提前感谢您的帮助

JavaScript的数字精度不高。例如:

.2 + .2 = .4
但是

您使用的数字太大,JS无法保持良好的精度。在你的控制台中记录以下内容,你就会明白我的意思

10206726906969851 > Number.MAX_SAFE_INTEGER // returns true

您使用的号码太大。我过去也经历过这种情况。服务器会给我一些适合Java的数字,但是对于JavaScript来说太大了。所以JS会把他们都搞砸的。唯一的修复方法是得到一个JS不会吐出来的更短的数字

JavaScript对于数字的精确性不是很高。例如:

.2 + .2 = .4
但是

您使用的数字太大,JS无法保持良好的精度。在你的控制台中记录以下内容,你就会明白我的意思

10206726906969851 > Number.MAX_SAFE_INTEGER // returns true

您使用的号码太大。我过去也经历过这种情况。服务器会给我一些适合Java的数字,但是对于JavaScript来说太大了。所以JS会把他们都搞砸的。唯一的修复方法是得到一个JS不会吐出来的更短的数字

console.log(10206726969851)
您可以将其存储为字符串,然后将值解析为数字
console.log(102067269851)
您可以将其存储为字符串,然后将值解析为数字谢谢您提供的信息:)我将其存储为字符串,如@Jorius所述!谢谢你提供的信息:)我将它存储为一个字符串,如@Jorius!