JavaScript的“parseInt()”存在问题

16
5个回答

25

如果你的参数以0开头,则它将被解析为八进制,而08不是有效的八进制数。提供第二个参数10来指定基数-一个十进制数。

document.write(parseInt("08", 10));

7

使用这个修改

parseInt("08",10);

parseInt(string, radix) 的规则如下:

如果省略了进制参数,JavaScript 将按照以下方式处理:

  • 如果字符串以 "0x" 开头,则进制为 16(十六进制)
  • 如果字符串以 "0" 开头,则进制为 8(八进制)。此功能已被弃用
  • 如果字符串以任何其他值开头,则进制为 10(十进制)

2

您希望parseInt('08', 10)以十进制解析。


2
你只是在使用该函数的输入参数方面有点错误。请参阅此处了解更多信息。基本上:

parseInt()函数解析字符串并返回一个整数。

radix参数用于指定要使用的数字系统,例如,radix为16(十六进制)表示应将字符串中的数字从十六进制转换为十进制。

如果省略radix参数,则JavaScript假定以下内容:

  • 如果字符串以“0x”开头,则radix为16(十六进制)
  • 如果字符串以“0”开头,则radix为8(八进制)。此功能已弃用
  • 如果字符串以任何其他值开头,则radix为10(十进制)

因此,07和08被解析为八进制。这就是为什么07是7,08是0(它被四舍五入到最接近的值)的原因。


1

试试这个:

parseInt('08', 10)

它将会产生8


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接