Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2018/08/09 关于parseInt #24

Open
ChenPt opened this issue Aug 9, 2018 · 0 comments
Open

2018/08/09 关于parseInt #24

ChenPt opened this issue Aug 9, 2018 · 0 comments
Labels
JavaScript 笔试题 校招遇到做错的笔试题或者有趣的笔试题

Comments

@ChenPt
Copy link
Owner

ChenPt commented Aug 9, 2018

思考题

parseInt('0.0000009') // ???
parseInt(0.0000009)  // ???

上面两道题的结果?
0 0 ?

parseInt

关于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。

科学计数法

JS会将小数位数超过6位的小数以科学计数法表示

var a = 0.000009 // 6位小数
a.toString() === '0.000009' // true

var b = 0.0000009 // 7位小数 实际上表示为 9e-7
b.toString() === '0.0000009' // false
@ChenPt ChenPt added 笔试题 校招遇到做错的笔试题或者有趣的笔试题 JavaScript labels Aug 9, 2018
@ChenPt ChenPt changed the title parseInt 2018/08/09 关于parseInt Aug 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JavaScript 笔试题 校招遇到做错的笔试题或者有趣的笔试题
Projects
None yet
Development

No branches or pull requests

1 participant