JavaScript十大取整方法实例教程


Posted in Javascript onDecember 03, 2020

1. parseInt()

// js内置函数,注意接受参数是string,所以调用该方法时存在类型转换
parseInt("1.5555") // => 1

2. Number.toFixed(0)

// 注意toFixed返回的字符串,若想获得整数还需要做类型转换
1.5555.toFixed(0) // => "1"

3. Math.ceil()

// 向上取整
Math.ceil(1.5555) // => 2

4. Math.floor()

// 向下取整
Math.floor(1.5555) // => 1

5. Math.round()

// 四舍五入取整
Math.round(1.5555) // => 2

Math.round(1.4999) // => 1

6. Math.trunc()

// 舍弃小数取整
Math.trunc(1.5555) // => 1

7. 双按位非取整

// 利用位运算取整,仅支持32位有符号整型数,小数位会舍弃,下同
~~1.5555 // => 1

8. 按位运或取整

1.5555 | 0 // => 1

9. 按位异或取整

1.5555^0 // => 1

10. 左移0位取整

1.5555<<0 // => 1

上述10种取整方法中,最常用的估计是前2种 [我裂开了~~],不过从性能角度看,位运算取整和Math函数性能最佳,内置方法parseInt次之,toFixed性能最劣。

以下是Benchmark测试结果,证明了这点,toFixed性能是最差的:

darwin x64
整数取整#getNum1#parseInt x 210,252,532 ops/sec ±2.74% (85 runs sampled)
整数取整#getNum2#toFixed x 3,281,188 ops/sec ±1.54% (86 runs sampled)
整数取整#getNum3#Math.ceil x 778,272,700 ops/sec ±3.97% (87 runs sampled)
整数取整#getNum4#Math.floor x 816,990,140 ops/sec ±0.54% (88 runs sampled)
整数取整#getNum5#Math.round x 814,868,414 ops/sec ±0.65% (88 runs sampled)
整数取整#getNum6#Math.trunc x 821,032,596 ops/sec ±0.54% (91 runs sampled)
整数取整#getNum7#~~num x 813,589,741 ops/sec ±0.67% (90 runs sampled)
整数取整#getNum8#num | 0 x 815,070,107 ops/sec ±0.65% (90 runs sampled)
整数取整#getNum9#num ^ 0 x 812,635,464 ops/sec ±0.74% (90 runs sampled)
整数取整#getNum10#num << 0 x 819,230,753 ops/sec ±0.49% (91 runs sampled)
Fastest is 整数取整#getNum6#Math.trunc,整数取整#getNum10#num << 0

Benchmark源代码

参考

developer.mozilla.org/zh-CN/docs/…

developer.mozilla.org/zh-CN/docs/…

developer.mozilla.org/zh-CN/docs/…

到此这篇关于JavaScript十大取整方法的文章就介绍到这了,更多相关JS取整方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
鼠标事件延时切换插件
Mar 12 Javascript
jquery 查找select ,并触发事件的实现代码
Mar 30 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
Jul 22 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
Vue触发式全局组件构建的方法
Nov 28 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
Sep 24 Javascript
js实现圆形菜单选择器
Dec 03 #Javascript
Javascript新手入门之字符串拼接与变量的应用
Dec 03 #Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 #Vue.js
微信小程序实现首页弹出广告
Dec 03 #Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
Dec 03 #Javascript
基于javascript实现放大镜特效
Dec 03 #Javascript
javascript实现时钟动画
Dec 03 #Javascript
You might like
聊天室php&amp;mysql(一)
2006/10/09 PHP
php长字符串定义方法
2012/07/12 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
vue根据值给予不同class的实例
2018/09/29 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
类如何去实现接口
2013/12/19 面试题
人力资源经理的岗位职责
2014/03/02 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
合作协议书格式
2014/08/19 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
春秋淹城导游词
2015/02/11 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
CSS3实现指纹特效代码
2022/03/17 HTML / CSS
vue的项目如何打包上线
2022/04/13 Vue.js