【问题标题】:Why different output for parseInt("10e+1") and parseFloat("10e+1") in JavaScript?为什么 JavaScript 中 parseInt("10e+1") 和 parseFloat("10e+1") 的输出不同?
【发布时间】:2018-05-29 21:00:48
【问题描述】:

当我尝试探索 pareseInt()、parseFloat() 和 Number() 之间的差异时,我吸收了这种差异。

parseInt("10e+1"); // 10
parseFloat("10e+1"); // 100
Number ("10e+1"); // 100

当我在 Mozilla 网络文档上阅读有关 parseFloat() 的文档时,我了解到 parseFloat() 将接受指数。对于 parseInt(),没有关于此的具体说明。我很想知道为什么这些类似方法会有这种差异

【问题讨论】:

  • 您的问题包含答案; parseInt()parseFloat() 不同,它只关注普通数字,返回一个整数。
  • @Pointy 我对你的回答没有妥协。你能再解释一下吗?
  • 您是否检查过其他答案中提到的其他问题? parseInt() 只看数字。任何其他字符,例如“。”或“e”,使其停止解析并返回到目前为止在源字符串中看到的整数。这就是它的工作方式。

标签: javascript


【解决方案1】:

parseInt 不理解指数符号。但是,它可以解析字符串中的数字,该数字是与字符连接的数字。以下也将返回 10 :

parseInt("10something")

【讨论】:

    【解决方案2】:

    JavaScript 提供了两种将非数字原语转换为数字的方法:parseInt()parseFloat()。您可能已经猜到了,前者将值转换为整数,而后者将值转换为浮点数。

    • "10e+1" 是一个字符串,parseInt() 不识别指数符号,所以它停在第二个字母处。
    • 10e+1 是一个数值为 100 的数字文字; parseInt() 看到 100 并愉快地返回。
    • "10e+1" 作为字符串在解析为 float 时非常好。

    示例:

    console.log( 'parseInt( 10e+1 ) return: ' + parseInt( 10e+1 ) );
    console.log( 'parseInt( "10e+1" ) return: ' + parseInt( '10e+1' ) );
    console.log( 'parseFloat( 10e+1 ) return: ' + parseFloat( 10e+1 ) );
    console.log( 'parseFloat( "10e+1" ) return: ' + parseFloat( '10e+1' ) );

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2016-04-11
      • 2012-07-05
      相关资源
      最近更新 更多