2011-05-09 100 views
0

可能重复:
Javascript parseInt gives very unexpected resultsparseInt函数在Javascript中并没有给予回复期望值

有人能解释为什么要使用JavaScript解释parseInt(08)parseInt(09)为零,但确实的一切权利在01〜07 ?

parseFloat会给我这些值的正确值,我只是找不到答案,为什么JavaScript只会对8s和9s做到这一点。

您的信息:前导零是从时间(小时:分钟)。

请看下面的链接以获得更好的示例:http://jsfiddle.net/NPtzA/3/ 在那里您可以看到这种意外的行为。

+0

正如一个侧面说明:如果你的整个字符串是一个数字(即无后缀) ,您可以使用一元'+'将其转换为(十进制)整数或浮点值:'var number = + numberString;'(它也更快)。 – 2011-05-09 09:43:07

+0

尝试'parseInt(08,10)'和'parseInt(09,10)'。 – robertc 2011-05-09 09:43:46

+0

是的!你是对的,感谢你找到了这个,现在我也可以在相关的问题中看到它! – Tim 2011-05-09 09:44:04

回答

0

parseInt返回0,因为函数试图确定正在查看的数字系统的正确基础。

无论是好事还是坏事,JavaScript的号码与一家领先的0都被视为八进制,这意味着没有08或09

希望有所帮助。

编辑:检查出我的小提琴编辑这增加10参数parseInt改变数字系统,它使用http://jsfiddle.net/jbrooksuk/NPtzA/5/