【问题标题】:Problems with javascript "parseInt()" [duplicate]javascript“parseInt()”的问题[重复]
【发布时间】:2023-03-04 10:24:01
【问题描述】:

可能重复:
Workarounds for JavaScript parseInt octal bug
How to parseInt a string with leading 0

document.write(parseInt("07"));

产生“7”

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

产生“0”

这给我带来了问题(对不起,我必须或者我不能提交问题)。任何人都知道为什么它很愚蠢或者是否有更好的功能?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    如果您的参数以 0 开头,它将被解析为八进制,并且 08 不是有效的八进制数。提供第二个参数10,它指定基数 - 一个以 10 为底的数字。

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

    【讨论】:

      【解决方案2】:

      使用这个修改

      parseInt("08",10);
      

      parseInt(string, radix) 的规则

      如果 radix 参数被省略,JavaScript 假设如下:

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

      【讨论】:

        【解决方案3】:

        您希望 parseInt('08', 10) 告诉它解析为小数。

        【讨论】:

          【解决方案4】:

          您只是以一种错误的方式使用该函数的输入参数。检查this 了解更多信息。基本上:

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

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

          如果 radix 参数被省略,JavaScript 假设如下:

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

          所以 07 和 08 被解析成八进制。这就是为什么 07 是 7 而 08 是 0(四舍五入到最接近)

          【讨论】:

            【解决方案5】:

            试试这个:

            parseInt('08', 10)
            

            它将产生 8 个

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-09-24
              • 2018-03-11
              • 2015-11-25
              • 2020-08-31
              • 2012-09-07
              • 2011-03-29
              • 1970-01-01
              • 2013-10-02
              相关资源
              最近更新 更多