当前位置: 首页 > news >正文

【前端基础】Javascript取整函数以及向零取整方式

 向零取整方式

在JavaScript中,有多种方式可以对数字进行取整操作,即去掉小数部分,只保留整数部分。其中,向0取整(也称为截断小数部分)的方式有以下几种常用的方法:

  1. 使用 Math.trunc()
    Math.trunc() 方法会去掉一个数字的小数部分,返回其整数部分,但不进行四舍五入。

    let num = 4.9;
    let truncated = Math.trunc(num); // 4
    console.log(truncated);
  2. 使用按位运算符 |(按位或)
    按位运算符 | 在处理数字时,会将操作数转换为32位整数,从而截断小数部分。

    let num = 4.9;
    let truncated = num | 0; // 4
    console.log(truncated);
  3. 使用双波浪号 ~~
    双波浪号 ~~ 也是一种按位取整的方式,效果与 | 类似,会截断小数部分。

    let num = 4.9;
    let truncated = ~~num; // 4
    console.log(truncated);
    综上所述,最推荐的方法是使用 Math.trunc(),因为它语义明确,代码易读,且性能较好。其他方法虽然也能实现向0取整的效果,但在可读性和维护性上可能稍逊一筹。
     

 常见取整函数

在JavaScript中,有多种方法可以对数字进行取整操作。这些方法各有特点,适用于不同的场景。以下是常见的几种取整函数及其详解:

  1. Math.floor()
    • 功能:向下取整,即返回小于或等于给定数字的最大整数。
    • 语法Math.floor(x)
    • 示例
      console.log(Math.floor(4.9)); // 输出: 4
      console.log(Math.floor(-4.1)); // 输出: -5
  2. Math.ceil()
    • 功能:向上取整,即返回大于或等于给定数字的最小整数。
    • 语法Math.ceil(x)
    • 示例
      console.log(Math.ceil(4.1)); // 输出: 5
      console.log(Math.ceil(-4.9)); // 输出: -4
  3. 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
  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),超出范围会导致精度丢失。

  5. 双否定(Double Negation)
    • 功能:通过双否定操作将浮点数转换为整数(相当于 Math.trunc)。
    • 示例
      console.log(~~4.9); // 输出: 4
      console.log(~~-4.1); // 输出: -4
    • 注意:双否定操作对超出JavaScript安全整数范围的数字无效。
  6. 字符串转换
    • 功能:通过字符串转换并截取整数部分来取整。
    • 示例
      console.log(parseInt(4.9)); // 输出: 4
      console.log(parseInt(-4.1)); // 输出: -4
    • 注意:这种方法依赖于字符串转换,性能可能不如其他内置方法。
  7. 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中&#xff0c;有多种方式可以对数字进行取整操作&#xff0c;即去掉小数部分&#xff0c;只保留整数部分。其中&#xff0c;向0取整&#xff08;也称为截断小数部分&#xff09;的方式有以下几种常用的方法&#xff1a; 使用 Math.trunc()&#xff…...

禅道与Jira与Ones对比:哪个更适合你的项目管理需求?

一、项目管理工具的重要性 在当今复杂的项目环境中&#xff0c;选择合适的项目管理工具对项目成功至关重要。随着项目规模的不断扩大、涉及领域的日益广泛以及团队成员的分散性&#xff0c;传统的项目管理方式已经难以满足需求。 项目管理工具可以帮助团队更好地规划和组织项…...

Linux I/O编程:I/O多路复用与异步 I/O对比

文章目录 0. 引言1. I/O 模型简介1.1 阻塞 I/O&#xff08;Blocking I/O&#xff09;1.2 非阻塞 I/O&#xff08;Non-Blocking I/O&#xff09;1.3 信号驱动式 I/O&#xff08;Signal-Driven I/O&#xff09;1.4 多路复用 I/O&#xff08;I/O Multiplexing&#xff09;1.5 异步…...

Spark Plan 之 SQLMetric

SQLMetric Spark Plan 包含以下基本 方法&#xff0c; /*** 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模型的火焰识别系统

大家好&#xff0c;YOLOv5模型能够快速准确地检测到火灾火焰&#xff0c;在火灾初期甚至是刚刚出现火苗时就发出警报。这为及时采取灭火措施争取了宝贵的时间&#xff0c;极大地降低了火灾造成的损失。系统可以对特定区域进行持续实时监测&#xff0c;无论白天还是夜晚&#xf…...

多模态AI:开启人工智能的新纪元

在人工智能的璀璨星河中&#xff0c;多模态AI技术正逐渐成为一颗耀眼的明星。随着科技的飞速发展&#xff0c;AI技术正以前所未有的速度迈向新的高峰&#xff0c;其中多模态AI的兴起尤为引人注目。本文将深入探讨多模态AI的定义、技术原理、应用场景以及未来发展趋势。 ps.图…...

麒麟信安支撑2024年电力监控系统网络安全加固培训护航电力网络安全!

在网络安全形势日益复杂的今天&#xff0c;电力行业的网络安全尤为重要。为提升电力监控系统网络安全运维人员的专业技能&#xff0c;由国调中心网安处精心策划&#xff0c;国家电网技术学院组织开展的“2024年电力监控系统网络安全加固培训”于近日圆满结束。麒麟信安作为重要…...

横表和纵表 中的横表

图1 图2...

7个常用的JavaScript数组操作进阶用法

文章目录 1、查找数组中的最大值方法一&#xff1a;使用 Math.max 和展开运算符方法二:使用 for 循环逐一比较 2、查找数组中的第二大值方法一&#xff1a;排序后取第二大值方法二&#xff1a;遍历找到第二大值 3、去除数组中的重复项4、合并两个有序数组并保持有序5、旋转数组…...

Spark的Standalone集群环境安装

一.简介 与MR对比&#xff1a; 概念MRYARNSpark Standalone主节点ResourceManagerMaster从节点NodeManagerWorker计算进程MapTask&#xff0c;ReduceTaskExecutor 架构&#xff1a;普通分布式主从架构 主&#xff1a;Master&#xff1a;管理节点&#xff1a;管理从节点、接…...

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方差和相对平均偏差

参考资料&#xff1a;实用统计学【李奉令】 Eberhart-Russell模型、Shukla模型、相对平均偏差稳定性分析比较 相对平均偏差在品种稳定性分析中的作用 1、Shukla方差 生物统计中&#xff0c;用于描述一个群体离散程度的统计量有离差、方差、极差等&#xff0c; 国内品种区域试…...

双指针(二)双指针到底是怎么个事

一.有效的三角形个数 有效的三角形个数 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和微信小程序获取当前位置(腾讯地图)

之前的一个老项目&#xff0c;使用 uniapp 的 uni.getLocation 发现H5端定位不准确&#xff0c;比如余杭区会定位到临平区&#xff0c;根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本&#xff0c;是直接使用高德地图的api获取定位。 1.首…...

SQL HAVING子句

SQL 是一种基于“面向集合”思想设计的语言。HAVING 子句是一个聚合函数&#xff0c;用于过滤分组结果。 1 实践 1.1 缺失的编号 图 连续编号记录表t_seq_record 需求&#xff1a;判断seq 列编号是否有缺失。 SELECT 存在缺失的编号 AS res FROM t_seq_record HAVING COUN…...

计算机视觉基础:OpenCV库详解

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机视觉基础&#xff1a;OpenCV库详解 计算机视觉基础&#xff1a;OpenCV库详解 计算机视觉基础&#xff1a;OpenCV库详解 引…...

UI自动化测试工具(超详细总结)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 常用工具 1、QTP&#xff1a;商业化的功能测试工具&#xff0c;收费&#xff0c;可用于web自动化测试 2、Robot Framework&#xff1a;基于Python可扩展的关…...

AJAX 全面教程:从基础到高级

AJAX 全面教程&#xff1a;从基础到高级 目录 什么是 AJAXAJAX 的工作原理AJAX 的主要对象AJAX 的基本用法AJAX 与 JSONAJAX 的高级用法AJAX 的错误处理AJAX 的性能优化AJAX 的安全性AJAX 的应用场景总结与展望 什么是 AJAX AJAX&#xff08;Asynchronous JavaScript and XML…...

ONLYOFFICE 8.2测评:功能增强与体验优化,打造高效办公新体验

引言 随着数字化办公需求的不断增长&#xff0c;在线办公软件市场竞争愈加激烈。在众多办公软件中&#xff0c;ONLYOFFICE 无疑是一个颇具特色的选择。它不仅支持文档、表格和演示文稿的在线编辑&#xff0c;还通过开放的接口与强大的协作功能&#xff0c;吸引了众多企业和个人…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

1.3 VSCode安装与环境配置

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

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...