【前端基础】Javascript取整函数以及向零取整方式
向零取整方式
在JavaScript中,有多种方式可以对数字进行取整操作,即去掉小数部分,只保留整数部分。其中,向0取整(也称为截断小数部分)的方式有以下几种常用的方法:
-
使用
Math.trunc()
:Math.trunc()
方法会去掉一个数字的小数部分,返回其整数部分,但不进行四舍五入。let num = 4.9; let truncated = Math.trunc(num); // 4 console.log(truncated);
-
使用按位运算符
|
(按位或):
按位运算符|
在处理数字时,会将操作数转换为32位整数,从而截断小数部分。let num = 4.9; let truncated = num | 0; // 4 console.log(truncated);
-
使用双波浪号
~~
:
双波浪号~~
也是一种按位取整的方式,效果与|
类似,会截断小数部分。
综上所述,最推荐的方法是使用let num = 4.9; let truncated = ~~num; // 4 console.log(truncated);
Math.trunc()
,因为它语义明确,代码易读,且性能较好。其他方法虽然也能实现向0取整的效果,但在可读性和维护性上可能稍逊一筹。
常见取整函数
在JavaScript中,有多种方法可以对数字进行取整操作。这些方法各有特点,适用于不同的场景。以下是常见的几种取整函数及其详解:
- Math.floor()
- 功能:向下取整,即返回小于或等于给定数字的最大整数。
- 语法:
Math.floor(x)
- 示例:
console.log(Math.floor(4.9)); // 输出: 4 console.log(Math.floor(-4.1)); // 输出: -5
- Math.ceil()
- 功能:向上取整,即返回大于或等于给定数字的最小整数。
- 语法:
Math.ceil(x)
- 示例:
console.log(Math.ceil(4.1)); // 输出: 5 console.log(Math.ceil(-4.9)); // 输出: -4
- Math.round()
- 功能:四舍五入,即返回最接近给定数字的整数。
- 语法:
Math.round(x)
- 示例:
console.log(Math.round(4.5)); // 输出: 5 console.log(Math.round(4.4)); // 输出: 4 console.log(Math.round(-4.5)); // 输出: -4
- Math.trunc()
- 功能:移除小数部分,只保留整数部分,不进行四舍五入。
- 语法:
Math.trunc(x)
- 示例:
console.log(Math.trunc(4.9)); // 输出: 4 console.log(Math.trunc(-4.1)); // 输出: -4
位运算符取整
- 功能:通过位运算符
|
、^
、&
、~
、<<
、>>
、>>>
可以将浮点数转换为整数,相当于去掉小数部分(类似Math.trunc
,但仅对32位整数有效)。 - 示例:
console.log(4.9 | 0); // 输出: 4 console.log(-4.1 | 0); // 输出: -4
- 注意:位运算符取整仅适用于32位整数范围(-231-1),超出范围会导致精度丢失。
- 功能:通过位运算符
- 双否定(Double Negation)
- 功能:通过双否定操作将浮点数转换为整数(相当于
Math.trunc
)。 - 示例:
console.log(~~4.9); // 输出: 4 console.log(~~-4.1); // 输出: -4
- 注意:双否定操作对超出JavaScript安全整数范围的数字无效。
- 功能:通过双否定操作将浮点数转换为整数(相当于
- 字符串转换
- 功能:通过字符串转换并截取整数部分来取整。
- 示例:
console.log(parseInt(4.9)); // 输出: 4 console.log(parseInt(-4.1)); // 输出: -4
- 注意:这种方法依赖于字符串转换,性能可能不如其他内置方法。
- toFixed() 后转整数
- 功能:通过
toFixed()
方法将数字转换为指定小数位数的字符串,然后转换为整数。 - 示例:
const num = 4.9; console.log(parseFloat(num.toFixed(0))); // 输出: 5 const num2 = -4.1; console.log(parseFloat(num2.toFixed(0))); // 输出: -4
- 注意:
toFixed()
方法返回的是字符串,需要再次转换为数字。
- 功能:通过
总结
- Math.floor():向下取整。
- Math.ceil():向上取整。
- Math.round():四舍五入。
- Math.trunc():移除小数部分。
- 位运算符:通过位操作移除小数部分(32位整数范围内有效)。
- 双否定:通过双否定操作移除小数部分(32位整数范围内有效)。
- 字符串转换:通过字符串转换并截取整数部分。
- toFixed() 后转整数:通过
toFixed()
方法转换为字符串后再转为整数。
每种方法都有其适用的场景和限制,选择时需根据具体需求进行权衡。
相关文章:
【前端基础】Javascript取整函数以及向零取整方式
向零取整方式 在JavaScript中,有多种方式可以对数字进行取整操作,即去掉小数部分,只保留整数部分。其中,向0取整(也称为截断小数部分)的方式有以下几种常用的方法: 使用 Math.trunc()ÿ…...
禅道与Jira与Ones对比:哪个更适合你的项目管理需求?
一、项目管理工具的重要性 在当今复杂的项目环境中,选择合适的项目管理工具对项目成功至关重要。随着项目规模的不断扩大、涉及领域的日益广泛以及团队成员的分散性,传统的项目管理方式已经难以满足需求。 项目管理工具可以帮助团队更好地规划和组织项…...
Linux I/O编程:I/O多路复用与异步 I/O对比
文章目录 0. 引言1. I/O 模型简介1.1 阻塞 I/O(Blocking I/O)1.2 非阻塞 I/O(Non-Blocking I/O)1.3 信号驱动式 I/O(Signal-Driven I/O)1.4 多路复用 I/O(I/O Multiplexing)1.5 异步…...
Spark Plan 之 SQLMetric
SQLMetric Spark Plan 包含以下基本 方法, /*** return All metrics containing metrics of this SparkPlan.*/def metrics: Map[String, SQLMetric] Map.empty/*** return [[SQLMetric]] for the name.*/def longMetric(name: String): SQLMetric metrics(name)…...
基于YOLOv5模型的火焰识别系统
大家好,YOLOv5模型能够快速准确地检测到火灾火焰,在火灾初期甚至是刚刚出现火苗时就发出警报。这为及时采取灭火措施争取了宝贵的时间,极大地降低了火灾造成的损失。系统可以对特定区域进行持续实时监测,无论白天还是夜晚…...
多模态AI:开启人工智能的新纪元
在人工智能的璀璨星河中,多模态AI技术正逐渐成为一颗耀眼的明星。随着科技的飞速发展,AI技术正以前所未有的速度迈向新的高峰,其中多模态AI的兴起尤为引人注目。本文将深入探讨多模态AI的定义、技术原理、应用场景以及未来发展趋势。 ps.图…...
麒麟信安支撑2024年电力监控系统网络安全加固培训护航电力网络安全!
在网络安全形势日益复杂的今天,电力行业的网络安全尤为重要。为提升电力监控系统网络安全运维人员的专业技能,由国调中心网安处精心策划,国家电网技术学院组织开展的“2024年电力监控系统网络安全加固培训”于近日圆满结束。麒麟信安作为重要…...
横表和纵表 中的横表
图1 图2...
7个常用的JavaScript数组操作进阶用法
文章目录 1、查找数组中的最大值方法一:使用 Math.max 和展开运算符方法二:使用 for 循环逐一比较 2、查找数组中的第二大值方法一:排序后取第二大值方法二:遍历找到第二大值 3、去除数组中的重复项4、合并两个有序数组并保持有序5、旋转数组…...
Spark的Standalone集群环境安装
一.简介 与MR对比: 概念MRYARNSpark Standalone主节点ResourceManagerMaster从节点NodeManagerWorker计算进程MapTask,ReduceTaskExecutor 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接…...
Android Glide动态apply centerCropTransform(),transition withCrossFade动画,Kotlin
Android Glide动态apply centerCropTransform(),transition withCrossFade动画,Kotlin import android.graphics.Bitmap import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.Glide import …...
shukla方差和相对平均偏差
参考资料:实用统计学【李奉令】 Eberhart-Russell模型、Shukla模型、相对平均偏差稳定性分析比较 相对平均偏差在品种稳定性分析中的作用 1、Shukla方差 生物统计中,用于描述一个群体离散程度的统计量有离差、方差、极差等, 国内品种区域试…...
双指针(二)双指针到底是怎么个事
一.有效的三角形个数 有效的三角形个数 class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int i0,end nums.length-1;int count 0;for( i end;i>2;i--){int left 0;int right i-1;while(left<right){if(nums[left]nums[right]>nums…...
vscode通过remote-ssh连接远程开发机
文章目录 安装扩展注意事项:tips其他参数安装扩展 安装VS Code和SSH-Remote扩展:首先,需要确保你已经在本地计算机上安装了VS Code,并且在扩展市场中搜索并安装了"Remote - SSH"扩展。配置SSH:在本地计算机上,打开VS Code的命令面板(使用快捷键"Ctrl+Shi…...
uniapp实现H5和微信小程序获取当前位置(腾讯地图)
之前的一个老项目,使用 uniapp 的 uni.getLocation 发现H5端定位不准确,比如余杭区会定位到临平区,根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本,是直接使用高德地图的api获取定位。 1.首…...
SQL HAVING子句
SQL 是一种基于“面向集合”思想设计的语言。HAVING 子句是一个聚合函数,用于过滤分组结果。 1 实践 1.1 缺失的编号 图 连续编号记录表t_seq_record 需求:判断seq 列编号是否有缺失。 SELECT 存在缺失的编号 AS res FROM t_seq_record HAVING COUN…...
计算机视觉基础:OpenCV库详解
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机视觉基础:OpenCV库详解 计算机视觉基础:OpenCV库详解 计算机视觉基础:OpenCV库详解 引…...
UI自动化测试工具(超详细总结)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 常用工具 1、QTP:商业化的功能测试工具,收费,可用于web自动化测试 2、Robot Framework:基于Python可扩展的关…...
AJAX 全面教程:从基础到高级
AJAX 全面教程:从基础到高级 目录 什么是 AJAXAJAX 的工作原理AJAX 的主要对象AJAX 的基本用法AJAX 与 JSONAJAX 的高级用法AJAX 的错误处理AJAX 的性能优化AJAX 的安全性AJAX 的应用场景总结与展望 什么是 AJAX AJAX(Asynchronous JavaScript and XML…...
ONLYOFFICE 8.2测评:功能增强与体验优化,打造高效办公新体验
引言 随着数字化办公需求的不断增长,在线办公软件市场竞争愈加激烈。在众多办公软件中,ONLYOFFICE 无疑是一个颇具特色的选择。它不仅支持文档、表格和演示文稿的在线编辑,还通过开放的接口与强大的协作功能,吸引了众多企业和个人…...
Science Robotics 综述揭示演化研究新范式,从机器人复活远古生物!
在地球46亿年的漫长历史长河中,生命的演化过程充满着未解之谜。如何从零散的化石证据中还原古生物的真实面貌?如何理解关键演化节点的具体过程?10月23日,Science Robotics发表重磅综述,首次系统性提出"古生物启发…...
uni-app表格带分页,后端处理过每页显示多少条
uni-app表格带分页,后端处理过每页可以显示多少条,一句设置好了每页显示的数据量,不需要钱的在进行操作,在进行对数据的截取 <th-table :column"column" :listData"data" :checkSort"checkSort"…...
基于STM32设计的矿山环境监测系统(NBIOT)_262
文章目录 一、前言1.1 项目介绍【1】开发背景【2】研究的意义【3】最终实现需求【4】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】上位机开发思路1.3 项目开发背景【1】选题的意义【2】摘要【3】国内外相关研究现状【5】参考文献1.4 开发工具的选择【1】设备端开发【2】…...
【初阶数据结构与算法】线性表之链表的分类以及双链表的定义与实现
文章目录 一、链表的分类二、双链表的实现1.双链表结构的定义2.双链表的初始化和销毁初始化函数1初始化函数2销毁函数 3.双链表的打印以及节点的申请打印函数节点的申请 4.双链表的头插和尾插头插函数尾插函数 5.双链表的查找和判空查找函数判空函数 6.双链表的头删和尾删头删函…...
219页华为供应链管理:市场预测SOP计划、销售预测与存货管理精要
一、华为ISC供应链管理 华为的集成供应链(ISC)领先实践和SISC(Siyuan Integrated Supply Chain)架构体现了其在供应链管理领域的深度和广度,以下是7点关键介绍: 全面的供应链视野:华为ISC涵盖…...
mac 安装指定的node和npm版本
mac 安装指定的node和npm版本 0.添加映像: export N_NODE_MIRRORhttps://npmmirror.com/mirrors/node 1、使用 npm 全局安装 n npm install -g n 如果报了sudo chown -R 502:20 "/Users/xxx/.npm" sudo npm install -g n 2、根据需求安装指定版本的 node …...
为什么分布式光伏规模是6MW为界点?
安科瑞 Acrel-Tu1990 最近,能源局颁布了一项规定,明确指出6兆瓦(MW)及以上的分布式光伏电站必须实现自发自用,自行消纳电力。多个省份的能源局进一步规定,规模超过6兆瓦的电站需按照集中式管理进行操作。此…...
arm64架构的linux 配置vm_page_prot方式
在 ARM64 架构上,通过 vm_page_prot 属性可以修改 UIO 映射内存的访问权限及缓存策略,常见的有非缓存(Non-cached)、写合并(Write Combine)等。下面是 ARM64 常用的 vm_page_prot 设置及其对应的操作方式。…...
vue3 + naive ui card header 和 title 冲突 bug
背景描述 最近发现一个 naive ui 上的问题,之前好好的,某一次升级后就出现了一个 bug,Modal 使用 card 布局后,Header Solt 下面的内容不见了,变成了 title,因为这个 solt 里面是有操作 action 的…...
Ubuntu 22.04.5 LTS配置 bond
本次纯实验,不会讲解bond功能,配置bond mode 1 和 mode 4 如何配置 确定内核模块是否加载 实验使用root用户权限,非root用户使用sudo 调用root权限 rootubuntu22:~# lsmod | grep bonding rootubuntu22:~# modprobe bonding rootubuntu22:~# …...
wordpress的cms主题/怎么制作网站详细流程
图[一]下面我们就开始讲与文字内容有关的排版操作。首先是文章中字体和字号的设定。一般的文档正文部分都是用宋体小四或五号字,文章中的小标题可以用黑体三号字,文章的总标题用黑体一号或小一号字。当然,这只是常用的标准。我们还可以根据对…...
seo推广关键词公司/关键词首页排名优化平台
简介:校内的两难困境就在这里,不过对于陈一舟来说,他一点不为难,因为他是一个连眼前利益都不肯放弃的人。我猜测开心网的商业模式会走第三条路,就是自己做web小游戏,最终转型成为一个SNS型的休闲web网络游戏…...
网页设计网站/电商网站建设
这篇文章是一位 女读者 (加粗!太难得)的面试阿里的经历分享,虽然第二面就失败了,但是这样的经历对自己帮助应该还是很大的。下面的一些问题非常具有代表性,部分问题我简单做了修改(有些问题表述的不那么准确)。这些问题对于大家用…...
ftp查看网站后台密码/seo是干啥的
http://blog.csdn.net/gtuu0123/article/details/6040105————————————————————————————————————————————————————————————————在java的线程Thread类中有三个方法,比较容易混淆,在这里解…...
网站开发好什么进行界面的优化/网站排名查询
单元:对于C语言来说,单元即函数。 C语言单元测试:对C语言中的功能函数进行正确性、效能等方面的测试。 CUnit:一个用于C语言单元测试的软件,下载地址为http://sourceforge.net/projects/cunit/,相关的例子…...
做电商网站/seo实战
今天在创建一个用作程序界面的XML文件后编译器反复报错: xxx.xml: Invalid file name: must contain only [a-z0-9_.] 按照Eclipse的提示添加标示结果运行还是错,百思不得其解!! 最后还得请教大神才知道, [a-z0-9_.]…...