我有一个问题,parseInt()意外返回0,这是一个示例:
parseInt('-06') = -6
parseInt('-07') = -7
parseInt('-08') = 0
为什么结果为0?如果我继续下降(-09,-10,等)也一样。字符串的格式来自我的框架,所以我需要处理它。谢谢!
答案 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
答案 1 :(得分:2)
你也可以试试这个:
'-06' * 1 = -6
'-07' * 1 = -7
'-08' * 1 = -8
答案 2 :(得分:1)