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里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
Jun 06 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
浅谈JavaScript正则表达式-非捕获性分组
Mar 08 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
在vue项目中集成graphql(vue-ApolloClient)
Sep 08 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
如何在JavaScript中等分数组的实现
Dec 13 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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
javascript时区函数介绍
2012/09/14 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
门前三包责任书
2014/04/15 职场文书
合作意向书
2014/07/30 职场文书
医德医魂心得体会
2014/09/11 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
英语复习计划
2015/01/19 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
详细聊聊vue中组件的props属性
2021/11/02 Vue.js