parseInt(0.0000006)居然等于6
探讨背景:不知道小伙伴们有没有发现,如果是parseInt(0.006)或者parseInt(0.0006)等返回的值都应该 0,但是parseInt(0.0000006)返回的值却诡异的 6,这到底为什么呢?
parseInt函数的作用
首先先说一下,parseInt()的作用是什么?他是js原生的方法,是用来把数字字符串转化为Number类型的数字的,还有他只是转化整数部分。
探究原因
发现我们理想的是把这个小数都变成0,但是parseInt(0.0000006)却返回6,真是离谱呀。
console.log(parseInt(0.006)) //0
console.log(parseInt(0.0006)) //0
console.log(parseInt(0.00006)) //0
console.log(parseInt(0.000006)) //0
console.log(parseInt(0.0000006)) //6
返回我就开始探索他的原因,是哪里出现了问题。
parseInt(0.0000006) //0.000006
String(0.0000006); //6e-7
parseInt(6e-7); //6
parseInt(0.0000006) //6
总结原因
这下我发现原因了,原来是因为在10的-6次方之后,形式就换成了复数的形式(6e-7)。然后用parseInt()把6e-7的6,进行了返回,所以最后返回的值是6。
改正
如果要把小数安全的返回回来,就要用别的方法啦!
Math.floor(0.00006); //0
Math.floor(0.000006); //0
Math.floor(0.0000006); //0
这样就可以得到你想要的值了。我会不定时的发一些,我学习中遇到的坑还有一些小知识点的,如果喜欢的话,记得关注我一下!