问题描述
parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10
为什么在第二种情况下parseInt返回1? 这三个不应返回相同的结果吗?
1楼
SLaks
5
已采纳
2015-07-30 20:04:38
-
1e1
是一个数字文字,其结果为10
;parseInt()
看到10
并愉快地返回该值。 -
'1e1'
是一个字符串,并且parseInt()
无法识别指数表示法,因此它停在第一个字母处。 -
解析为浮点数时,将
'1e1'
作为字符串很好用。
奖励 : parseInt('1e1', 16)
返回481
,将其解析为3位数的十六进制数字。
2楼
Tomasz Wi?niewski
1
2015-07-30 20:12:01
当您尝试解析字符串时,仅返回字符串中的第一个数字。 在检查功能规范
另外,您可以自己进行测试: parseInt('2e1')
-返回2
parseInt('3e2')
-返回3
3楼
Ali Mamedov
0
2016-04-15 11:36:48
要了解它们之间的区别,我们必须阅读ECMA官方文档中的和
... parseInt可能只将字符串的开头部分解释为整数值 ; 它会忽略无法解释为整数符号一部分的任何字符,并且不会给出任何此类字符被忽略的指示...
... parseFloat可能仅将字符串的开头部分解释为Number值 ; 它会忽略无法解释为十进制文字符号一部分的任何字符,并且不会给出任何此类字符被忽略的指示...
parseInt仅期望一个整数值(1、10、28等),但是parseFloat需要一个Number。
因此,字符串"1e1"
将在parseFloat中自动转换为Number。
parseInt('1e1'); // 1
parseFloat('1e1'); // 10