JavaScript数学运算(取整,取余和取模)

article/2025/9/22 6:08:41

fe1d37c3c9fbf918c5e0c695271c3a42.png

来源 | https://www.fly63.com

这篇文章主要介绍js取整、取余和取模的实现方法和它们之间的区别,以及Math对象的常用方法函数介绍,有需要的朋友可以参考下。

取整

在项目开发过程中,有时要对小数取整操作,JavaScript也提供了4种方法,分别为round()、ceil()、floor()和parseInt()取整。

其中round()是四舍五入取整,ceil() 是向上取整,floor() 是向下取整,parseInt() 只取整数部分。

1、保留整数部分 

Math.parseInt() 方法就是仅取整数部分,也就是不管小数点后的数是否大于5,一律舍弃:

 
//保留整数部分
parseInt(3/2)  // 1

2、向上取整

Math.ceil() 方法就是向上取整,求最小的整数但不小于本身,例如:

 
// 向上取整,有小数就整数部分加1
Math.ceil(3/2)  // 2

3、向下取整

Math.floor() 方法就是向下取整,求最大的整数但不大于本身,例如:

 
// 向下取整,丢弃小数部分
Math.floor(3/2)  // 1

4、四舍五入

如果要求对小数进行四舍五入,请使用 Math.round() 方法,例如:

 
// 四舍五入
Math.round(3/2)  // 2

除此之外还可以使用toFixed方法来实现,比如:

 
(3/2).toFixed() //2

toFixed(num)返回值为string,把 Number 四舍五入为指定小数位数的数字,num为指定的小数位数。

取余和取模

区别

取余是数学中的概念,取模是计算机中的概念,两者都是求两数相除的余数

1.当两数符号相同时,结果相同,比如:7%4 与 7 Mod 4 结果都是3

2.当两数符号不同时,结果不同,比如

 
(-7)%4=-3
(-7)Mod4=1
取余运算,求商采用fix 函数 ,向0方向舍入,取 -1。因此 (-7) % 4 商 -1 余数为 -3
取模运算,求商采用 floor 函数,向无穷小方向舍入,取 -2。因此 (-7) Mod 4 商 -2 余数为 1

取余

取余运算符 (%):一个表达式的值除以另一个表达式的值,返回余数。公式:result = numberA % numberB返回值:result,任何变量。

 
7%4  //3
-7%3 //-1

取模

取模运算可采用如下公式:

 
Number.prototype.mod = function(n) {return ((this % n) + n) % n;
}
// 或 
function mod(n, m) {return ((n % m) + m) % m;
}

使用:

 
mod(-7, 3) //2
(-7).mod(3) //2(7).mod(3) //1

Math 对象的方法介绍

  • abs(x) 返回数的绝对值 1 2 3

  • acos(x) 返回数的反余弦值 1 2 3

  • asin(x) 返回数的反正弦值 1 2 3

  • atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值 1 2 3

  • atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间) 1 2 3

  • ceil(x) 对一个数进行上舍入。1 2 3

  • cos(x) 返回数的余弦 1 2 3

  • exp(x) 返回 e 的指数。1 2 3

  • floor(x) 对一个数进行下舍入。1 2 3

  • log(x) 返回数的自然对数(底为e) 1 2 3

  • max(x,y) 返回 x 和 y 中的最高值 1 2 3

  • min(x,y) 返回 x 和 y 中的最低值 1 2 3

  • pow(x,y) 返回 x 的 y 次幂 1 2 3

  • random() 返回 0 ~ 1 之间的随机数 1 2 3

  • round(x) 把一个数四舍五入为最接近的整数 1 2 3

  • sin(x) 返回数的正弦 1 2 3

  • sqrt(x) 返回数的平方根 1 2 3

  • tan(x) 返回一个角的正切 1 2 3

  • toSource() 代表对象的源代码 1 4 -

  • valueOf() 返回一个 Math 对象的原始值

学习更多技能

请点击下方公众号

49129ee4401f11859de0e3f664203799.gif

8e19153a52deb649219d6fe8dd6e27e6.png

374eb61e71cec98fd3ab9d3a2f4c3eee.png


http://chatgpt.dhexx.cn/article/0GSgNqZo.shtml

相关文章

JavaScript数字取整、取余总结

一、取整: 取整 //丢弃小数部分,保留整数部分 parseInt(85.5)//85向上取整 //向上取整,有余数或者小数,整数位1 Math.ceil(7/3) //3 Math.ceil(85.6) //86 Math.ceil(72.1) //73向下取整 //向下取整,有余数或者小数…

QuickSort 拿下!

剑指 Offer 45. 把数组排成最小的数   输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 由于这一题的解题思路是:首先将数组转换为字符数组,然后根据规则对其进行排序&#xff…

经典算法之快速排序(QuickSort)

​ 活动地址:CSDN21天学习挑战赛 目录 快速排序算法原理图解Java代码实现 算法分析 快速排序 通过一趟排序将待排元素分成独立的两部分,其中一部分为比基准数小的元素,另一部分则是比基准数大的元素。然后对这两部分元素再按照前面的算法进行…

QuickSort(快速排序)——C语言实现

前言: 快速排序可真是太经典啦!当然,我的复现并没有实现调用一个排序参考函数来实现对不同类型数据进行排序这一功能。 快速排序其中的一大重要思想就是分而治之,采取不断二分的方式进行排序,时间复杂度O(n…

快速排序算法Quicksort()

快速排序的思想是用数组的首元素作为标准将A划分成前后两部分,比首元素小的元素构成数组的前部分,比首元素大的元素构成数组的后部分,这两部分构成两个新的子问题,算法接着分别对这两部分递归进行排序 伪代码: 输入&am…

QuickSort c++

QuickSort c 简介 算法导论 原理 from Wiki 执行顺序&#xff1a; 左侧排序完 在执行右侧 实验结果&#xff1a; C code #include"QUICKSORT.h" #pragma once #include<vector>int Partition(std::vector<int>& A, const int& p, const…

java快速排序quicksort

public class QuickSortDemo {public static void main(String[] args) {int[] arr {12,36,56,44,9,44,18};sort(arr , 0 , arr.length-1);System.out.println("排序后&#xff1a;"Arrays.toString(arr));}public static void sort(int[] arr, int left, int right…

QuickSort

一、结果显示 二、QuickSort.h #include<iostream>using namespace std;template<class T> class QuickSort { private:T a[10] {d,a,f,c,v,b,a,g,s,z};int size sizeof(a); public:QuickSort(){cout<<"size "<<size<<endl;}void…

快速排序(QuickSort)算法介绍

算法简介 快速排序&#xff08;Quicksort&#xff09;是对冒泡排序的一种改进算法。由C. A. R. Hoare在1960年提出。该算法使用广泛、效率很高&#xff0c;是最重要的排序算法之一。 该算法的实现基本可分为以下几步&#xff1a; 在数组中选一个基准数&#xff08;通常为数组…

快速排序(Quicksort)详解

引言 这篇文章是我在2015年写的&#xff0c;当时正在看算法导论中关于快排的部分&#xff0c;因此写下文章总结一下当时对快排的理解。这几天我一直在review一下我先前写的blog&#xff0c;发现有些地方写的不算太好&#xff0c;还有一些错误的地方。今天我重新修改一下这篇文…

排序——快速排序(Quick sort)

概况 快速排序&#xff08;Quick sort&#xff09;是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。 算法思路 通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对…

Visual Studio 2013 + Intel(R) Visual Fortran 安装教程

安装了好几遍&#xff0c;ivf都不能加载到vs中&#xff0c;中途放弃了vs&#xff0c;又改用codeblocks编译器&#xff0c;依然在写fortran的时候出现了各种问题&#xff0c;于是又放弃了codeblocks改回vs&#xff0c;总之是折腾了好久&#xff0c;终于装明白了ivf并且将fortran…

fortan dll在本地可以运行成功,移植到其他电脑上报错Exception in thread main java.lang.UnsatisfiedLinkError: 找不到指定的模块。

坑&#xff01;&#xff01;&#xff01;大大的坑&#xff01;&#xff01;&#xff01; 本项目需要实现java调用fortran的dll&#xff0c;我在本地编译好apae.dll&#xff0c;然后java调用dll成功&#xff01; 将apae.dll发送给对方&#xff0c;同样的java代码和fortran的dl…

Matlab2017b配置C++/C/Fortan编译器的问题(已解决)

今天在配置Matlab2017编译C代码的时候&#xff0c;一贯的调用mex -setup命令&#xff0c;结果显示没有找到任何支持的编译器或SDK。您可以安装免费的mingw-w64 c/c编译器; 崩溃&#xff01;&#xff01; 最后根据错误所给的链接在matlab2017的获取附加功能安装mingw-w64 、结…

Fortan写出数据到CSV文件中

1.输入代码 program HelloWorldopen(unit60, fileF:\Lambda3.csv)write(60,*) 4.2,5.2/sqrt(2*12550/4.1595e-11)end program HelloWorld 2.结果如下

ABAQUS6.10 VS2008 Intel fortan11.1

1.先参考微博 http://blog.sina.com.cn/s/blog_56d5b3b00100wg2y.html 2. 其它一些资料以及注意事项 IVF 11.1 可用 http://pan.baidu.com/s/1pKWPCq3 用DAEMON tools 安装IVF11.1 DAEMON是个虚拟光驱 VS2008 用英文版 ABAQUS用6.10 6.11 6.12 都安装完之后 找到Commands文件夹…

fluent加载第三方(C++,Fortan等)动态链接库

这里我介绍一种比较简单的方法&#xff0c;首先我们从ANSYS Fluent UDF Manual上随便找一段正确的UDF&#xff0c;下面这段UDF取自ANSYS 18的ANSYS Fluent UDF Manual&#xff0c;位于2.3.23.3. Example 1 - Pressure Profile / *********************************************…

Abaqus运行fortan报错:“Error in job Job-1: Problem during compilation - D:\test.for”

一、简介 最近在学习abaqus的子程序&#xff1b;学习视频为简单实例_哔哩哔哩_bilibili 模型建立后&#xff0c;所写的子程序代码如下&#xff1a; SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,1 COORDS,JLTYP,SNAME) CINCLUDE ABA_PARAM.INC CDIMENSION TIME(2),…

linux安装go语言环境

linux安装go语言环境 前言环境版本前期知识准备部署步骤安装wget下载压缩包&#xff0c;解压到指定路径/usr/local配置环境变量创建GOPATH文件夹添加PATH环境变量and设置GOPATH环境变量1.打开配置文件2.更改配置信息3.然后执行下面命令使上述环境变量的设置立即生效&#xff1a…

如何修改linux的 系统语言

首先查看当前系统的语言 1、echo $LANG 查看当前操作系统的语言 中文&#xff1a;zh_CN.UTF-8 英文:&#xff1a;en_US.UTF-8 2、临时更改默认语言&#xff0c;当前立即生效 重启失效 export LANGen_US.UTF-8 3、永久生效,修改配置文件 centos7/rhel7之前版本&#x…