應該很多人都知道 JavaScript 的數值型別沒有整數,一併都是 double precision 64-bit 浮點數。但實際運作起來還是很討厭啊:
1 | > b = parseInt('9007199254740992', 10); // 2^53 |
Reference: http://ecma262-5.com/ELS5_HTML.htm#Section_8.5
其實已經不準確了,但沒有錯誤訊息。這裡我本想做的事情是 JSON parse/stringify facebook user id,據 Facebook blog 說的長度是 64 bits. 當然會有人建議乾脆存成字串啦,但除非移民太空,不然其實不可能超過 64 了。在找支援的套件時,都不是很熱門,感覺怕怕的。後來看到 json-bignum,內部是直接用字串存,簡單,看了一下覺得還可以,但當然在比較之類的就要小心了,例如相等的話要先 toString() 之後才能比。