【前端基础】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 无疑是一个颇具特色的选择。它不仅支持文档、表格和演示文稿的在线编辑,还通过开放的接口与强大的协作功能,吸引了众多企业和个人…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...