2016-03-04 78 views
0
n = "11004691915666669" 
parseInt(n) 
parseInt(n, 10) 

两个结果是:11004691915666668 这是关闭的。我测试了一些其他值,并正确转换。这是库中的错误还是有更好的转换方法?javascript parseInt()失败?

+3

JavaScript将处理精度高达16位数的数字。 –

+0

嘿,这很近,不是吗? – dandavis

+0

问题是'Number.MAX_SAFE_INTEGER <11004691915666669' – Oriol

回答

3

参见this SO question for more details。您的值超出了Javascript可以完全准确表示的最大整数。

在引擎盖下Javascript不理解整数,所有的浮点数。当达到非常大的数字时,会降低精度。

0

从MDN给出的Javascript参考here

的整数范围内的数字定义如下:

var biggestInt = 9007199254740992; 
var smallestInt = -9007199254740992; 

这是为什么,因为你的电话号码超过的Javascript预设的biggestInt值时,parseInt函数方法仅返回位于整数范围内的整数值对于上面定义的Javascript中的数字。