浮点数转整数

Published: by Creative Commons Licence

将浮点数转换成整数的常用方法

parseInt(1.5) // 输出 1

新的方法 ~~

~是按位取反,整数按位取反很好理解,如果是浮点数按位取反呢?

~1.5 // 输出 -2

浮点数1.5按位取反后,变成了-2,因为~只对整数有用,遇到浮点数会先将其转换成整数,利用这个特性,1.5两次取反后,将得到1

~1.5 // 输出-2
~-2  // 输出1

最后也就实现了将浮点数转换成整数了。既然有parseInt(),为什么推荐使用~~呢?我们看看两种方法的性能如何

在chrome下,运行以下代码,测试过程如下:

var a = new Date()
var b;
for(i=0;i<100000;i++){
   b = parseInt(1.5)
}
console.log(new Date() - a) // 输出 453

var a = new Date()
var b;
for(i=0;i<100000;i++){
   b = ~~1.5
}
console.log(new Date() - a) // 输出 371

可见~~的性能要优于parseInt(虽然在chrome下差异不是很明显),但~~这种写法很便捷有木有~