n = "11004691915666669"
parseInt(n)
parseInt(n, 10)
两个结果是:11004691915666668 这是关闭的。我测试了一些其他值,并正确转换。这是库中的错误还是有更好的转换方法?javascript parseInt()失败?
n = "11004691915666669"
parseInt(n)
parseInt(n, 10)
两个结果是:11004691915666668 这是关闭的。我测试了一些其他值,并正确转换。这是库中的错误还是有更好的转换方法?javascript parseInt()失败?
参见this SO question for more details。您的值超出了Javascript可以完全准确表示的最大整数。
在引擎盖下Javascript不理解整数,所有的浮点数。当达到非常大的数字时,会降低精度。
从MDN给出的Javascript参考here。
的整数范围内的数字定义如下:
var biggestInt = 9007199254740992;
var smallestInt = -9007199254740992;
这是为什么,因为你的电话号码超过的Javascript预设的biggestInt值时,parseInt函数方法仅返回位于整数范围内的整数值对于上面定义的Javascript中的数字。
JavaScript将处理精度高达16位数的数字。 –
嘿,这很近,不是吗? – dandavis
问题是'Number.MAX_SAFE_INTEGER <11004691915666669' – Oriol