当前位置: 首页 > 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;吸引了众多企业和个人…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...