2010-12-19 45 views
5

我在正整数之前有一些零。我想删除零,所以只剩下正整数。像'001'只会是'1'。我认为最简单的方法是使用parseInt('001')。但是我发现它不适用于数字8和9.示例parseInt('008')将导致“0”而不是“8”。JavaScript函数parseInt()不能正确解析前导0的数字

这里是整个的html代码:

<html> <body> 
<script> 
var integer = parseInt('002'); 
document.write(integer); 

</script> 
</body> </html> 

但我可以采用某种报告这个问题?有谁知道另一个简单的解决方法这个问题?

+0

另外,通过使用'parseInt('008').toString()'去除前导零非常笨拙,可以考虑使用'RegExp'而不是 – 2010-12-19 04:44:31

回答

10

这是记录的行为:好像他们是八http://www.w3schools.com/jsref/jsref_parseInt.asp

字符串与一家领先的“0”被解析。

+2

MDN文档的质量通常比他们的w3schools更高。 [这里是](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt)相关的MDN页面。 – 2012-12-14 19:19:00

+1

相关:http://w3fools.com/ – 2013-02-16 16:05:21

+0

[FireFox 21](https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/21)好奇地决定[删除此功能] (https://bugzilla.mozilla.org/show_bug.cgi?id=786135)。 Chrome显然已经有一段时间了:http://stackoverflow.com/questions/14542377 – 2013-05-15 00:15:03

3

前缀为零的数字被解析为八进制数。

+2

这不是[整个故事](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Global_Objects/parseInt) - 它是浏览器和版本相关的。 – 2012-12-14 19:20:14

15

您必须指定的数量(基数)的基础

parseInt('01', 10); 
+5

是的,和一个JS代码质量的工具,如JSLint(http://www.jslint.com/)可以给你一个关于它:) – 2010-12-19 04:13:21

1

这实际上不是一个错误。由于传统原因,以0开头的字符串被解释为八进制,并且八进制中没有数字8.为解决此问题,您应明确传递一个基数(即parseInt("008", 10))。