Javascript parseInt(';1e1';)与parseFloat(';1e1';)
为什么parseInt在第二种情况下返回1?三个不应该返回相同的结果Javascript parseInt(';1e1';)与parseFloat(';1e1';),javascript,parseint,parsefloat,Javascript,Parseint,Parsefloat,为什么parseInt在第二种情况下返回1?三个不应该返回相同的结果 1e1是计算结果为10的数字文字parseInt()看到10并愉快地返回它 '1e1'是一个字符串,parseInt()不识别指数符号,因此它在第一个字母处停止 '1e1'当解析为浮点时,作为字符串是完全正确的 奖金:parseInt('1e1',16)返回481,将其解析为3位十六进制数。当您试图解析字符串时,只返回字符串中的第一个数字。检查以下位置的功能规格: 此外,您还可以自己进行测试: parseInt('2e1')-
1e1
是计算结果为10
的数字文字parseInt()
看到10
并愉快地返回它'1e1'
是一个字符串,parseInt()
不识别指数符号,因此它在第一个字母处停止'1e1'
当解析为浮点时,作为字符串是完全正确的奖金:
parseInt('1e1',16)
返回481
,将其解析为3位十六进制数。当您试图解析字符串时,只返回字符串中的第一个数字。检查以下位置的功能规格:
此外,您还可以自己进行测试:
parseInt('2e1')
-返回2
parseInt('3e2')
-返回3
要了解差异,我们必须阅读ecma官方文档以了解和
parseInt只能将字符串的前导部分解释为整数值;它忽略任何不能被解释为整数表示法一部分的字符,并且没有给出忽略任何此类字符的指示
parseFloat只能将字符串的前导部分解释为数值;它忽略任何不能被解释为十进制文字符号的一部分的字符,,并且没有给出任何此类字符被忽略的指示
parseInt只需要一个整数值(1、10、28等),但parseFloat需要一个数字。因此,字符串“1e1”
将自动转换为parseFloat中的数字
parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10
1e1不是有效的int。我猜它会丢弃e1。如果您解析int(string),它将只读取字符串的第一个数字部分,其余部分将被丢弃。不建议使用W3。为什么,@djechlin?好的,已经理解为什么:
parseInt('1e1'); // 1
parseFloat('1e1'); // 10