JavaScript 函数 parseInt() 无法正确解析以 0 开头的数字
我在正整数之前有一些零。我想删除零,这样只保留正整数。就像“001”只会是“1”。我认为最简单的方法是使用 parseInt('001')。但我发现它不适用于数字 8 和 9。示例 parseInt('008') 将产生 '0' 而不是 '8'。
以下是完整的 html 代码:
<html> <body>
<script>
var integer = parseInt('002');
document.write(integer);
</script>
</body> </html>
但是我可以以某种方式报告这个问题吗?有谁知道解决这个问题的另一个简单方法?
I have some zeros prior to a positive integer. I want to remove the zeros so only the positive integer remains. Like '001' will only be '1'. I thought the easiest way was to use parseInt('001'). But what I discovered is that it don't works for the number 8 and 9. Example parseInt('008') will result in '0' instead of '8'.
Here are the whole html code:
<html> <body>
<script>
var integer = parseInt('002');
document.write(integer);
</script>
</body> </html>
But can I somehow report this problem? Do anyone know an another easy workaround this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您必须指定数字的基数(基数)
You have to specify the base of the number (radix)
这是记录的行为:http://www.w3schools.com/jsref/jsref_parseInt.asp
以 '0' 开头的字符串被解析为八进制。
This is documented behavior: http://www.w3schools.com/jsref/jsref_parseInt.asp
Strings with a leading '0' are parsed as if they were octal.
以零为前缀的数字被解析为八进制。
Number prefixed with zero is parsed as octal.
这实际上不是一个错误。由于遗留原因,以 0 开头的字符串被解释为八进制,而八进制中没有数字 8。要解决此问题,您应该显式传递基数(即
parseInt("008", 10)
)。This is not actually a bug. For legacy reasons strings starting with 0 are interpreted in octal, and in octal there is no digit 8. To work around this you should explicitly pass a radix (i.e.
parseInt("008", 10)
).