【问题标题】:Why does parseInt("BG", 16) return 11 instead of NaN? [duplicate]为什么 parseInt("BG", 16) 返回 11 而不是 NaN? [复制]
【发布时间】:2019-06-21 03:26:06
【问题描述】:

我使用 parseInt 将字符串转换为十六进制值,但 parseInt("BG", 16) 的结果是 11。我认为它必须是 NaN。这里发生了什么?

【问题讨论】:

  • 同理parseInt("12abc")返回12。"如果parseInt遇到指定基数中不是数字的字符,它会忽略它和所有后续字符,并返回解析后的整数值到那时。”

标签: javascript


【解决方案1】:

parseInt 的第二个参数是基数。在base 16中,“BG”中的“B”对应11(9 = 9, 10 = A, 11 = B),而G不在base 16的范围内(即0-9和A-F),所以它被忽略。

所以,结果和parseInt('B', 16)一样:

console.log(parseInt('B', 16));

【讨论】:

    【解决方案2】:

    parseInt 函数将其第一个参数转换为字符串,解析 该字符串,然后返回一个整数或 NaN。

    parseInt

    如果 parseInt 在 指定的基数,它会忽略它以及所有后续字符和 返回解析到该点的整数值。 parseInt 截断 数字到整数值。允许前导和尾随空格。

    在第一个示例中,B 可以解析为整数,因此它返回,但在第二个示例中,G 超出了十六进制值的范围,因此它返回 NaN

    console.log(parseInt("BG", 16))
    console.log(parseInt("GB", 16))

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 2012-02-04
      • 2022-01-22
      • 2016-11-16
      • 2014-06-06
      • 2012-04-28
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多