网站首页 > 基础教程 正文
javascript 解决默认取整的坑(目前已知的最佳解决方案)
复现该问题
js在数字操作时总会取更高精度的结果,例如1234/10结果就是123.4,但是在c或者java中整数除以10的结果还是整数,小数部分被舍去,不仅如此 *,%等运算符也会出现这种结果,但我们有时候更希望舍去取整
使用Math标准库
Math标准库提供了Math.floor():向下取整Math.ceil():向上取整Math.round():四舍五入这三种取整方法,效率也不错,但是在进行一些操作时,总感觉别扭,而且效率会偏低,查看了v8中Math部分的源码后发现需要进行非常多的操作后才能得到结果
在进行Math.floor操作时会进行很多操作,复杂度较高,有很多层递归才能获得结果
使用按位运算符
按位运算符中的~是将数字按位取反,位运算是js中计算较快的操作符,把浮点数两次按位取反后可以获得舍去取整的结果即Math.floor(5.6)==~~5.6)这是目前已知的最快解决方法
示例代码
以上两个函数获取的结果完全一样
我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。
猜你喜欢
- 2024-11-05 javascript的科普基础二 javascript的介绍
- 2024-11-05 JavaScript-第二章 javascriptj
- 2024-11-05 Javascript一些实用技巧 javascript循环技巧
- 2024-11-05 第31节 类型和对象-Javascript-零点程序员-王唯
- 2024-11-05 Js复习小结 js总结
- 2024-11-05 「收藏」JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
- 2024-11-05 JavaScript Promise 详解 js中promise的使用与理解
- 2024-11-05 web前端:原生js全动画企业官网,开机动画、切屏/分屏动画
- 2024-11-05 SpreadJS教程:如何在填报场景中使用数据绑定获取数据源
- 2024-11-05 纯JavaScript实现的MQTT智能门锁 智能门锁近三年的市场数据采集
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)