Open ChenPt opened 6 years ago
parseInt('0.0000009') // ??? parseInt(0.0000009) // ???
上面两道题的结果? 0 0 ?
关于parseInt,就是用于将字符类型的数据转化成数字类型。如果传的参数不是字符串,则会先自动调用toString方法将参数转化为字符串。
parseInt从传进来的参数的左边的第一个字符开始进行转换,遇到了非数字的字符就会停止转换。
parseInt接收两个参数
parseInt(string, radix)
parseInt('10101', 2) // 21
第二个参数是该string使用的进制,默认string的进制为10进制,最终转换的结果以10进制表示
parseInt('0.0000009') // ???
结果为0,因为parseInt遇到了.字符之后就停止了转换,所以结果为0
.
parseInt(0.00000009) // ???
结果为9,我一开始也不知道为什么,因为一开始我也忘记了parseInt会将不是string类型的参数隐式转换为字符类型,而0.0000009的表示其实是以科学计数法表示的9e-7,这时候转换为字符串就是'9e-7',实际上也就是parseInt('9e-7'),遇到e之后停止转换。输出9,所以结果为9。
0.0000009
9e-7
'9e-7'
parseInt('9e-7')
e
JS会将小数位数超过6位的小数以科学计数法表示
var a = 0.000009 // 6位小数 a.toString() === '0.000009' // true var b = 0.0000009 // 7位小数 实际上表示为 9e-7 b.toString() === '0.0000009' // false
思考题
上面两道题的结果? 0 0 ?
parseInt
关于parseInt,就是用于将字符类型的数据转化成数字类型。如果传的参数不是字符串,则会先自动调用toString方法将参数转化为字符串。
parseInt从传进来的参数的左边的第一个字符开始进行转换,遇到了非数字的字符就会停止转换。
parseInt接收两个参数
第二个参数是该string使用的进制,默认string的进制为10进制,最终转换的结果以10进制表示
第一题
结果为0,因为parseInt遇到了
.
字符之后就停止了转换,所以结果为0第二题
结果为9,我一开始也不知道为什么,因为一开始我也忘记了parseInt会将不是string类型的参数隐式转换为字符类型,而
0.0000009
的表示其实是以科学计数法表示的9e-7
,这时候转换为字符串就是'9e-7'
,实际上也就是parseInt('9e-7')
,遇到e
之后停止转换。输出9,所以结果为9。科学计数法
JS会将小数位数超过6位的小数以科学计数法表示