JS parseInt()返回0

时间:2012-12-13 21:18:47

标签: javascript

  

可能重复:
  Why parseInt() works like this?

我有一个问题,parseInt()意外返回0,这是一个示例:

parseInt('-06') = -6
parseInt('-07') = -7
parseInt('-08') = 0

为什么结果为0?如果我继续下降(-09,-10,等)也一样。字符串的格式来自我的框架,所以我需要处理它。谢谢!

3 个答案:

答案 0 :(得分:11)

使用parseInt

时,需要传递基数参数
parseInt('-08', 10);

如果不这样做,并且当您正在解析的字符串具有前导零时,parseInt会根据您的浏览器产生不同的结果。最常见的问题是字符串将被视为基数为8的数字,这就是您所看到的。

这就是为什么这适用于'-06'和'-07' - 这些都是有效的基数为8的数字。由于'-08'不是有效的base-8数,解析失败,返回0。

来自MDN

  

radix

     

表示上述基数的整数   串。虽然此参数是可选的,但始终将其指定为   消除读者的困惑并保证可预测的行为。   当基数为时,不同的实现会产生不同的结果   未指定。


另请注意,您可以使用一元+运算符将这些字符串转换为数字:

​var str = '-08';
var num = +str;

console.log(num);​​​

//logs -8

DEMO

答案 1 :(得分:2)

你也可以试试这个:

'-06' * 1 = -6
'-07' * 1 = -7
'-08' * 1 = -8

答案 2 :(得分:1)

这是firefox中的错误,请改用parseFloat。有关此错误的详细信息here

检查parseFloat结果HERE