parseInt('1e1') 与 parseFloat('1e1')
parseInt('1e1') vs parseFloat('1e1')
parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10
为什么第二种情况是parseInt returns 1?三者不应该return一样的结果吗?
1e1
是一个计算结果为 10
的数字文字; parseInt()
看到 10
并且很高兴 returns 那。
'1e1'
是字符串,parseInt()
不识别指数表示法,所以停在第一个字母。
'1e1'
作为字符串在解析为浮点数时完全没问题。
Bonus: parseInt('1e1', 16)
returns 481
, 将其解析为 3 位十六进制数。
当您尝试解析字符串时,仅返回字符串中的第一个数字。检查 http://www.w3schools.com/jsref/jsref_parseint.asp
处的函数规范
另外,你可以自己测试一下:
parseInt('2e1')
- returns 2
parseInt('3e2')
- returns 3
要了解差异,我们必须阅读 parseInt and parseFloat
的 ecma 官方文档
... parseInt 可能仅将字符串的前导部分解释为 整数值;它会忽略任何不能被解释为 整数 符号的一部分的字符,并且没有任何迹象表明任何此类字符都被忽略了...
... parseFloat 可能仅将字符串的前导部分解释为 数字值;它会忽略任何不能被解释为 十进制文字 符号的一部分的字符,并且没有任何迹象表明任何此类字符都被忽略了...
parseInt 只需要一个整数值(1、10、28 等),但 parseFloat 需要 Number。因此,string "1e1"
将在 parseFloat.
中自动转换为 Number
parseInt('1e1'); // 1
parseFloat('1e1'); // 10
parseInt(1e1); //10
parseInt('1e1'); //1
parserFloat('1e1') //10
为什么第二种情况是parseInt returns 1?三者不应该return一样的结果吗?
1e1
是一个计算结果为10
的数字文字;parseInt()
看到10
并且很高兴 returns 那。'1e1'
是字符串,parseInt()
不识别指数表示法,所以停在第一个字母。'1e1'
作为字符串在解析为浮点数时完全没问题。
Bonus: parseInt('1e1', 16)
returns 481
, 将其解析为 3 位十六进制数。
当您尝试解析字符串时,仅返回字符串中的第一个数字。检查 http://www.w3schools.com/jsref/jsref_parseint.asp
处的函数规范另外,你可以自己测试一下:
parseInt('2e1')
- returns 2
parseInt('3e2')
- returns 3
要了解差异,我们必须阅读 parseInt and parseFloat
的 ecma 官方文档... parseInt 可能仅将字符串的前导部分解释为 整数值;它会忽略任何不能被解释为 整数 符号的一部分的字符,并且没有任何迹象表明任何此类字符都被忽略了...
... parseFloat 可能仅将字符串的前导部分解释为 数字值;它会忽略任何不能被解释为 十进制文字 符号的一部分的字符,并且没有任何迹象表明任何此类字符都被忽略了...
parseInt 只需要一个整数值(1、10、28 等),但 parseFloat 需要 Number。因此,string "1e1"
将在 parseFloat.
parseInt('1e1'); // 1
parseFloat('1e1'); // 10