2017-03-23 18 views
1

我目前正在試圖通過localStorage的數據存儲在我的網站,如果如我這樣做:的Javascript問題與localStorage的(值改變本身)

localStorage.setItem("vue",10206726906969851) 

當我想要得到值回我得到這個結果:

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

那麼爲什麼值會發生變化?預先感謝您的幫助

+1

'console.log(10206726906969851)' – epascarello

+0

您可以將它存儲爲字符串,然後解析數值爲 – Jorius

回答

0

JavaScript在數字精度上並不是史詩般的。舉個例子:

.2 + .2 = .4 

.2 + .2 + .2 = 0.6000000000000001 

您正在使用的數量太大,JS在其上保持良好的精度。將以下內容記錄在控制檯中,您將看到我的意思。

10206726906969851 > Number.MAX_SAFE_INTEGER // returns true 

您使用的號碼太大。我過去經歷過這個。服務器會給我的數字很適合Java,但對於JavaScript來說太大了。所以...... JS會把他們搞砸了。唯一的解決辦法是得到一個較短的數字,JS不會禁止。

+0

感謝您的信息:)我將它作爲字符串存儲爲@Jorius! – saperlipopette