可能重复: 为什么parseInt()是这样工作的?
在parseInt()意外返回0时,我遇到了一个问题,下面是一个示例:
parseInt('-06') = -6
parseInt('-07') = -7
parseInt('-08') = 0
为什么结果是0?如果我继续下去也一样(-09,-10,等等)。字符串的格式来自我的框架,所以我需要处理它。谢谢!
发布于 2012-12-13 21:20:18
使用parseInt
时,需要传递一个基参数。
parseInt('-08', 10);
如果没有,并且解析的字符串有前导零,parseInt
会根据浏览器产生不同的结果。最常见的问题是字符串将被视为一个基-8数字,这就是您所看到的。
这就是为什么“-06”和“-07”--它们都是有效的基数--8的原因。由于'-08‘不是有效的基数-8,解析失败,并返回0。
来自MDN
板蓝根 表示上述字符串基数的整数。尽管此参数是可选的,但始终要指定它以消除读者的混淆,并保证可预测的行为。当没有指定基数时,不同的实现会产生不同的结果。
还请注意,可以使用一元+
运算符将这些字符串转换为数字:
var str = '-08';
var num = +str;
console.log(num);
//logs -8
发布于 2012-12-13 21:22:55
您也可以尝试这样做:
'-06' * 1 = -6
'-07' * 1 = -7
'-08' * 1 = -8
https://stackoverflow.com/questions/13868643
复制相似问题