我目前正在試圖通過localStorage的數據存儲在我的網站,如果如我這樣做:的Javascript問題與localStorage的(值改變本身)
localStorage.setItem("vue",10206726906969851)
當我想要得到值回我得到這個結果:
localStorage.getItem("vue")
-> "10206726906969852"
那麼爲什麼值會發生變化?預先感謝您的幫助
我目前正在試圖通過localStorage的數據存儲在我的網站,如果如我這樣做:的Javascript問題與localStorage的(值改變本身)
localStorage.setItem("vue",10206726906969851)
當我想要得到值回我得到這個結果:
localStorage.getItem("vue")
-> "10206726906969852"
那麼爲什麼值會發生變化?預先感謝您的幫助
JavaScript在數字精度上並不是史詩般的。舉個例子:
.2 + .2 = .4
但
.2 + .2 + .2 = 0.6000000000000001
您正在使用的數量太大,JS在其上保持良好的精度。將以下內容記錄在控制檯中,您將看到我的意思。
10206726906969851 > Number.MAX_SAFE_INTEGER // returns true
您使用的號碼太大。我過去經歷過這個。服務器會給我的數字很適合Java,但對於JavaScript來說太大了。所以...... JS會把他們搞砸了。唯一的解決辦法是得到一個較短的數字,JS不會禁止。
感謝您的信息:)我將它作爲字符串存儲爲@Jorius! – saperlipopette
'console.log(10206726906969851)' – epascarello
您可以將它存儲爲字符串,然後解析數值爲 – Jorius