parseInt(' 1e1')vs parseFloat(' 1e1')

时间:2015-07-30 20:01:49

标签: javascript parseint parsefloat

parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10

为什么parseInt在第二种情况下返回1?三者不应该返回相同的结果吗?

3 个答案:

答案 0 :(得分:5)

  1. 1e1是一个数字文字,其评估结果为10; parseInt()看到10并愉快地返回该内容。
  2. '1e1'是一个字符串,parseInt()无法识别指数表示法,因此它会在第一个字母处停止。
  3. '1e1'作为字符串在解析为float时非常精细。
  4. 奖励parseInt('1e1', 16)返回481,将其解析为3位十六进制数字。

答案 1 :(得分:1)

当您尝试解析字符串时,只返回字符串中的第一个数字。检查http://www.w3schools.com/jsref/jsref_parseint.asp

处的功能规格

此外,您可以自己测试一下: parseInt('2e1') - 返回2 parseInt('3e2') - 返回3

答案 2 :(得分:0)

要了解我们必须阅读parseIntparseFloat

的ecma官方文档的区别

... parseInt 可能只将字符串的前导部分解释为整数值;它忽略了任何无法解释为整数符号的一部分的字符,并且没有任何指示忽略任何此类字符......

... parseFloat 可能只会将字符串的前导部分解释为数字值;它忽略了任何不能被解释为十进制文字符号的一部分的字符,并且没有任何迹象表明任何此类字符被忽略......

parseInt只需要一个整数值(1,10,28等),但是parseFloat需要Number。因此,字符串"1e1"将自动转换为parseFloat中的Number。

parseInt('1e1'); // 1

parseFloat('1e1'); // 10