parseInt()解析具有指数错误的数字文字
[我刚刚观察到,对于整数(包含parseInt
字符的数字),e
函数不关心小数。
让我们举个例子:-3.67394039744206e-15
> parseInt(-3.67394039744206e-15)
-3
> -3.67394039744206e-15.toFixed(19)
-3.6739e-15
> -3.67394039744206e-15.toFixed(2)
-0
> Math.round(-3.67394039744206e-15)
0
我希望parseInt
也将返回0
。底层发生了什么?为什么在这种情况下parseInt
返回3
(将感谢源代码中的一些摘要)?
在此示例中,我使用的是node v0.12.1
,但我希望在浏览器和其他JavaScript引擎中也会发生同样的情况。
我认为原因是parseInt
通过调用parseInt
将传递的值转换为字符串,这将返回ToString
,然后对其进行解析,因此它将考虑ToString
并将返回它。
"-3.67394039744206e-15"
parseInt函数将其第一个参数转换为字符串,并返回整数或NaN
parseInt()解析具有指数错误的数字文字
[我刚刚观察到,对于整数(包含parseInt
字符的数字),e
函数不关心小数。
让我们举个例子:-3.67394039744206e-15
> parseInt(-3.67394039744206e-15)
-3
> -3.67394039744206e-15.toFixed(19)
-3.6739e-15
> -3.67394039744206e-15.toFixed(2)
-0
> Math.round(-3.67394039744206e-15)
0
我希望parseInt
也将返回0
。底层发生了什么?为什么在这种情况下parseInt
返回3
(将感谢源代码中的一些摘要)?
在此示例中,我使用的是node v0.12.1
,但我希望在浏览器和其他JavaScript引擎中也会发生同样的情况。
我认为原因是parseInt
通过调用parseInt
将传递的值转换为字符串,这将返回ToString
,然后对其进行解析,因此它将考虑ToString
并将返回它。
"-3.67394039744206e-15"
parseInt函数将其第一个参数转换为字符串,并返回整数或NaN