我以前遇到过这个问题,但是有浮点数。类似于this other post。但是现在是正常数字。

我正在尝试这样做:

var
    str = 'asdf_10150663120210603',
    num = +str.split('_')[1];

console.log(num);
// 10150663120210603 expected
// 10150663120210604 actually resulting

因此,我尝试在Node&Chrome Inspector中简单地输出数字。
console.log(10150663120210603);
// 10150663120210604 actually resulting

是否有任何疯狂的方法(不管是不是骇人听闻的)来使变量等于10150663120210603。还是必须使用字符串?

最佳答案

JavaScript中的浮点数是64位IEEE-754浮点值。它们的尾数只有52位,而您的数字要求用54位来表示。它只是被四舍五入。

如果四舍五入为10150663120210604,则可以52位表示。

09-18 17:25