当前位置: 代码迷 >> JavaScript >> parseInt('1e1')与parseFloat('1e1')
  详细解决方案

parseInt('1e1')与parseFloat('1e1')

热度:100   发布时间:2023-06-05 14:10:42.0
parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10

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

  1. 1e1是一个数字文字,其结果为10 parseInt()看到10并愉快地返回该值。
  2. '1e1'是一个字符串,并且parseInt()无法识别指数表示法,因此它停在第一个字母处。
  3. 解析为浮点数时,将'1e1'作为字符串很好用。

奖励parseInt('1e1', 16)返回481 ,将其解析为3位数的十六进制数字。

当您尝试解析字符串时,仅返回字符串中的第一个数字。 在检查功能规范

另外,您可以自己进行测试: parseInt('2e1') -返回2 parseInt('3e2') -返回3

要了解它们之间的区别,我们必须阅读ECMA官方文档中的和

... parseInt可能只将字符串的开头部分解释为整数值 它会忽略无法解释为整数符号一部分的任何字符,并且不会给出任何此类字符被忽略的指示...

... parseFloat可能仅将字符串的开头部分解释为Number值 它会忽略无法解释为十进制文字符号一部分的任何字符,并且不会给出任何此类字符被忽略的指示...

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

parseInt('1e1'); // 1

parseFloat('1e1'); // 10
  相关解决方案