【问题标题】:java script parseInt() is not working properlyjavascript parseInt() 无法正常工作
【发布时间】:2015-05-23 17:06:48
【问题描述】:

我是 JavaScript 编程的初学者,当我检查 parseInt() 即,它将字符串转换为整数时,我得到了一些不同的输出。

 var temp = 030;
 document.writeln(" temp value after parseInt is =" +  parseInt(temp));

 output : temp value after parseInt is =24

我没有找到它显示 24 的原因。请你帮我解决这个问题。谢谢

【问题讨论】:

标签: javascript parseint


【解决方案1】:

原因是因为它被视为八进制格式。请注意,如果字符串以“0x”开头,则基数为 16(十六进制),如果字符串以“0”开头,则基数为 8(八进制)。

要获得正确的输出,请尝试如下:

alert(parseInt('030',10));

DEMO

【讨论】:

  • “如果字符串以“0”开头,则基数是 8(八进制)”——这是不正确的。 parseInt('030',10) 仍然是 30。您可能的意思是“如果 数字 以 0 开头”。另外,只是想提一下,在 ECMAScript 5 标准之前并非如此。在此之前,parseInt('030') 会产生 24。
  • @Xufox:- 是的,这是一个错字,我同意这是 ECMAScript 5 之前的情况。
【解决方案2】:

因为你有前缀0所以它会被解释为八进制数

所以 030 将被转换为十进制,即 24

【讨论】:

    【解决方案3】:

    ParseInt 是一种将字符串转换为数字的方法。 您可以在 parseInt 中添加第二个参数以加快数学基础。

    例如:

    parseInt('030',10)
    

    如果 radix 未定义或为 0(或不存在),JavaScript 假定如下:

    如果输入字符串以“0x”或“0X”开头,则基数为16(十六进制)并解析字符串的其余部分。

    如果输入字符串以“0”开头,则基数为 8(八进制)或 10(十进制)。确切选择哪个基数取决于实现。 ECMAScript 5 指定使用 10(十进制),但并非所有浏览器都支持这一点。因此,在使用 parseInt 时始终指定一个基数。

    如果输入字符串以任何其他值开头,则基数为 10(十进制)。

    【讨论】:

      【解决方案4】:

      你的意思是?:

       var temp = '030';
       document.writeln(" temp value after parseInt is =" +  parseInt(temp));
      

      【讨论】:

        猜你喜欢
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2022-11-19
        • 2012-12-18
        相关资源
        最近更新 更多