【问题标题】:Why parseInt 0.11 is not NaN but 0?为什么 parseInt 0.11 不是 NaN 而是 0?
【发布时间】:2022-01-22 18:28:14
【问题描述】:

这正常吗?

newItemRowNumber
'0.11'
parseInt(newItemRowNumber)
0

我希望它是不可解析的。

【问题讨论】:

    标签: javascript parsing


    【解决方案1】:

    这是正常的,因为 parseInt 只会从给定的数字字符串中删除小数部分。并返回点左侧数字的 int 值。 这是链接parseInt() in JS

    当你更好地解析浮点数时,你可以使用 parseFloat()

    console.log(parseFloat("0.11"))
    >>0.11
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    parseInt 将字符串解析为字符串开头的实数 0-9。当它遇到一个非整数字符时,它会停止解析,在这种情况下是 .

    19aaa 变成 19
    0.11变成0
    11.111 变成 11
    abc11 变为 NaN
    0xDEAD 变成 57005(因为是十六进制数)

    【讨论】:

      【解决方案3】:

      来自MDN

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

      0 是一个数字。

      . 不是。

      所以它需要0,忽略.,忽略.之后的所有内容,然后你得到0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-09
        • 1970-01-01
        • 2017-01-01
        • 1970-01-01
        • 2012-07-31
        • 2012-02-04
        相关资源
        最近更新 更多