为什么JavaScript中的parseInt(“10e + 1”)和parseFloat(“10e + 1”)的输出不同?

时间:2018-05-29 12:04:03

标签: javascript

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

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

当我在Mozilla Web文档上阅读有关parseFloat()的文档时,我理解parseFloat()将接受exponent。哪里没有关于parseInt()的具体要点。我非常有兴趣知道为什么这些类似方法存在差异

2 个答案:

答案 0 :(得分:3)

parseInt不了解exponantial表示法。但是它可以解析字符串中的数字,该字符串是与字符连接的数字。以下也将返回10:

parseInt("10something")

答案 1 :(得分:1)

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

  • "10e+1"是一个字符串,parseInt()无法识别指数表示法,因此它会停在第二个字母处。
  • 10e+1是一个数字文字,其评估值为100; parseInt()看到了 100并愉快地归还。{/ li>
  • "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' ) );