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选项卡插件实例
Mar 27 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 Javascript
js编写一个简单的产品放大效果代码
Jun 27 Javascript
JavaScript函数柯里化原理与用法分析
Mar 31 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
Sep 04 Javascript
jQuery each和js forEach用法比较
Feb 27 jQuery
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
Vue实现菜单切换功能
Nov 08 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创建动态图像
2006/10/09 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php 删除cookie方法详解
2014/12/01 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
原生js实现轮播图
2017/02/27 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
vue文件树组件使用详解
2018/03/29 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
Python实现的特征提取操作示例
2018/12/03 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
自我评价的写作规则
2014/01/06 职场文书
校园安全演讲稿
2014/05/09 职场文书
2016春节慰问信范文
2015/03/25 职场文书
河童之夏观后感
2015/06/11 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Python机器学习三大件之一numpy
2021/05/10 Python
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL