幽默:Javascript为什么算术没算好?

JS的整数转换函数parseInt在转换特别大的整数会出错:

parseInt(0.5);      // => 0
parseInt(0.05);    
// => 0
parseInt(0.005);    
// => 0
parseInt(0.0005);  
// => 0
parseInt(0.00005);  
// => 0
parseInt(0.000005);
// => 0
parseInt(0.0000005);
// => 5


parseInt函数默认将输入参数视同“字符串String”类型,然后才开始解析这个输入参数;
如果输入参数不是字符串,则转化为“字符串String”类型。
但是对于对于非常小的和非常大的数字,在其被转换为字符串的同时转换为指数表示。

0.0000005 :"5e-7"
999999999999999999999 (21 9) :
"1e+21"

那么对于
parseInt(0.0000005)
则转为字符串的指数:
parseInt("5e-7")
最后输出:
5