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 相关文章推荐
Javascript的一种模块模式
Mar 22 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
下拉列表select 由左边框移动到右边示例
Dec 04 Javascript
基于JS实现简单的样式切换效果代码
Sep 04 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
基于javascript显示当前时间以及倒计时功能
Mar 18 Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 Javascript
js 原型对象和原型链理解
Feb 09 Javascript
Vue核心概念Getter的使用方法
Jan 18 Javascript
angularjs自定义过滤器demo示例
Aug 24 Javascript
原生JavaScript实现刮刮乐
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语法(2)
2006/10/09 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
Python中防止sql注入的方法详解
2017/02/25 Python
Python面向对象特殊成员
2017/04/24 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
基于Python log 的正确打开方式
2018/04/28 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python框架django项目部署相关知识详解
2019/11/04 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
临床医学应届生求职信
2013/11/06 职场文书
物业管理毕业生个人的求职信
2013/11/30 职场文书
日语专业毕业生求职信
2013/12/04 职场文书
励志演讲稿800字
2014/08/21 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android
Java Spring读取和存储详细操作
2022/08/05 Java/Android