js中parseInt()的诡异行为

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

这样就可以得到你想要的值了。我会不定时的发一些,我学习中遇到的坑还有一些小知识点的,如果喜欢的话,记得关注我一下!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值