parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10
为什么parseInt在第二种情况下返回1?三者不应该返回相同的结果吗?
答案 0 :(得分:5)
1e1
是一个数字文字,其评估结果为10
; parseInt()
看到10
并愉快地返回该内容。'1e1'
是一个字符串,parseInt()
无法识别指数表示法,因此它会在第一个字母处停止。'1e1'
作为字符串在解析为float时非常精细。 奖励:parseInt('1e1', 16)
返回481
,将其解析为3位十六进制数字。
答案 1 :(得分:1)
当您尝试解析字符串时,只返回字符串中的第一个数字。检查http://www.w3schools.com/jsref/jsref_parseint.asp
处的功能规格此外,您可以自己测试一下:
parseInt('2e1')
- 返回2
parseInt('3e2')
- 返回3
答案 2 :(得分:0)
要了解我们必须阅读parseInt和parseFloat
的ecma官方文档的区别... parseInt 可能只将字符串的前导部分解释为整数值;它忽略了任何无法解释为整数符号的一部分的字符,并且没有任何指示忽略任何此类字符......
... parseFloat 可能只会将字符串的前导部分解释为数字值;它忽略了任何不能被解释为十进制文字符号的一部分的字符,并且没有任何迹象表明任何此类字符被忽略......
parseInt只需要一个整数值(1,10,28等),但是parseFloat需要Number。因此,字符串"1e1"
将自动转换为parseFloat中的Number。
parseInt('1e1'); // 1
parseFloat('1e1'); // 10