考慮以下字符串數組:轉換的數字數組多項
["9", "3", "3", "3", "8", "5", "2", "7", "0", "2", "2", "2", "7", "9", "8", "7"]
我寫這減少了代碼,試圖將數組轉換爲數字(不使用任何內置的解析器)。
d.reduce((res,n,idx)=>{
res *= 10;
res += n.charCodeAt(0) - 48;
console.log(res);
return res;
},0);
這裏是日誌:
9
93
933
9333
93338
933385
9333852
93338527
933385270
9333852702
93338527022
933385270222
9333852702227
93338527022279
933385270222798
9333852702227988
933385270222798(8)< - 應該是7
我注意到9333852702227980 + 7 = 9333852702227988
的代碼去的時候這個數字很大,我猜測我已經超出了安全Integer界限。我怎樣才能解決這個問題?
正如你猜測的那樣,你已經超出了['Number.MAX_SAFE_INTEGER']的範圍(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) ,這是'9007199254740991'或'(2 ** 53)-1',所以你失去了精度。 – 2017-04-05 12:20:52
'var num = nums.reduce((p,c)=> 10 * p ++ c);還有如@squint所述,如果總和超過最大安全整數限制,那麼結果就不再安全。 – Redu
那麼,是否有可能解析JS中MAX_SAFE_INTEGER數字較大的數字? –