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实现下拉菜单效果的代码
Jul 25 Javascript
JavaScript中setAttribute用法介绍
Jul 20 Javascript
JQuery加载图片自适应固定大小的DIV
Sep 12 Javascript
浅析JavaScript中的delete运算符
Nov 30 Javascript
js面向对象编程之如何实现方法重载
Jul 02 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
javascript实现图片上传前台页面
Aug 18 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
Vue.js每天必学之构造器与生命周期
Sep 05 Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 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 判断常量,变量和函数是否存在
2009/04/26 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
event.srcElement+表格应用
2006/08/29 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python中abs&amp;map&amp;reduce简介
2018/02/20 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Python实现简单http服务器
2018/04/12 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
Python装饰器知识点补充
2018/05/28 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL