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 相关文章推荐
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
实例讲解JavaScript中instanceof运算符的用法
Jun 08 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
Aug 25 Javascript
jsTree使用记录实例
Dec 01 Javascript
简单实现js浮动框
Dec 13 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
ionic+html5+API实现双击返回键退出应用
Sep 17 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
vue实现井字棋游戏
Sep 29 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如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
JS原生瀑布流效果实现
2019/04/26 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
Django开发中复选框用法示例
2018/03/20 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
详解Python的三种可变参数
2019/05/08 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
商务英语专业毕业生自荐信
2013/11/05 职场文书
培训主管的岗位职责
2013/11/23 职场文书
送货司机岗位职责
2013/12/11 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
环保倡议书500字
2014/05/15 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
怎样写好工作计划
2019/04/10 职场文书
数据库连接池
2021/04/06 MySQL
Python开发简易五子棋小游戏
2022/05/02 Python