警报(parseInt函数( "09")); 告诉我"0"为什么?

Chr*_*ris 14 javascript

可能重复:
JavaScript parseInt八进制错误的变通方法

这里非常困惑.

parseInt("09")= 0

parseInt("9")= 9

为什么前缀为零不仅被剥离了?

警报(parseInt函数( "01")); = 1

.. 愤怒退出

Cip*_*ipi 19

因为默认情况下将其视为八进制格式.如果你想获得9,你必须添加你想要的数字基数,那就是10,而不是8(对于八进制),所以调用:

parseInt("09", 10);

  • 为了澄清,八进制中的"9"是0,因为数字9在八进制中没有意义(只允许数字0到7),所以默认情况下,它没有赋值. (3认同)

use*_*064 6

A.7.parseInt函数

parseInt是一个将字符串转换为整数的函数.它停止时,看到一个非数字,因此 parseInt("16")parseInt("16 tons")产生相同的结果.如果函数以某种方式通知我们有关额外文本的信息会很好,但事实并非如此.

如果字符串的第一个字符是0,则该字符串被在底座8,而不是基座10评估在基座8,图8和9不是数字,所以parseInt("08")parseInt("09")产生0作为它们的结果.此错误会导致解析日期和时间的程序出现问题.幸运的是,parseInt可以使用基数参数,因此 parseInt("08", 10)产生8.我建议您始终提供基数参数.

"JavaScript:Douglas Crockford撰写的好文章.版权所有2008 Yahoo! Inc.,978-0-596-51774-8."


Mas*_*uso 6

原因如下:

If the string begins with "0x", the radix is 16 (hexadecimal)
If the string begins with "0", the radix is 8 (octal). This feature is deprecated
If the string begins with any other value, the radix is 10 (decimal)
Run Code Online (Sandbox Code Playgroud)

http://www.w3schools.com/jsref/jsref_parseInt.asp


Ale*_*pin 5

parseInt("09", 10)
Run Code Online (Sandbox Code Playgroud)

指定基数10.

编辑:为了澄清,前缀为零的数字将被假定为八进制表示法,而"09"不是有效的八进制数.