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 相关文章推荐
jQuery checkbox全选/取消全选实现代码
Nov 14 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
解决js中window.open弹出的是上次的缓存页面问题
Dec 29 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
vue.js开发环境搭建教程
May 04 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
Node.js+ELK日志规范的实现
May 23 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
Aug 14 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格式输出文件var_export函数实例
2014/11/15 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
python通过ssh-powershell监控windows的方法
2015/06/02 Python
Python自动扫雷实现方法
2015/07/25 Python
Python制作刷网页流量工具
2017/04/23 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
python算法题 链表反转详解
2019/07/02 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
Python中SQLite如何使用
2020/05/27 Python
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
环境科学毕业生自荐信
2013/11/21 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
环保建议书300字
2014/05/14 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
MySQL分区表管理命令汇总
2022/03/21 MySQL