首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回0的JS parseInt()

返回0的JS parseInt()
EN

Stack Overflow用户
提问于 2012-12-13 21:18:46
回答 3查看 1.9K关注 0票数 3

可能重复: 为什么parseInt()是这样工作的?

在parseInt()意外返回0时,我遇到了一个问题,下面是一个示例:

代码语言:javascript
运行
复制
parseInt('-06') = -6
parseInt('-07') = -7
parseInt('-08') = 0

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-13 21:20:18

使用parseInt时,需要传递一个基参数。

代码语言:javascript
运行
复制
parseInt('-08', 10);

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

这就是为什么“-06”和“-07”--它们都是有效的基数--8的原因。由于'-08‘不是有效的基数-8,解析失败,并返回0。

来自MDN

板蓝根 表示上述字符串基数的整数。尽管此参数是可选的,但始终要指定它以消除读者的混淆,并保证可预测的行为。当没有指定基数时,不同的实现会产生不同的结果。

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

代码语言:javascript
运行
复制
​var str = '-08';
var num = +str;

console.log(num);​​​

//logs -8

演示

票数 12
EN

Stack Overflow用户

发布于 2012-12-13 21:22:55

您也可以尝试这样做:

代码语言:javascript
运行
复制
'-06' * 1 = -6
'-07' * 1 = -7
'-08' * 1 = -8
票数 2
EN

Stack Overflow用户

发布于 2012-12-13 21:24:23

这是firefox中的一个bug,请使用parseFloat而不是.get更多地描述这个bug 这里

检查parseFloat结果这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13868643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档