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

来源|https://www.fly63.com这篇文章主要介绍js取整、取余和取模的实现方法和它们之间的区别,以及Math对象的常用方法函数介绍,有需要的朋友可以参考下。取整在项目开…

大家好,又见面了,我是你们的朋友全栈君。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127121.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NSGA2算法MATLAB

    NSGA2算法MATLABNSGA2算法MATLAB实现(能够自定义优化函数)以前写了一个简单的NSGA2的算法能够用在ZDT1函数上:http://www.omegaxyz.com/2017/05/04/nsga2matlabzdt1/那个NSGA2的算法不具有普遍性,下面参考课国外的课题小组的代码重新修改了内部冗余内容,使之能够自定义优化函数。更多内容访问omegaxyz.comNSGA2的过程为:

    2022年5月12日
    37
  • netty bytebuffer_netty源码剖析与实战

    netty bytebuffer_netty源码剖析与实战一、背景简介ByteBuf,顾名思义,就是字节缓冲区,是Netty中非常重要的一个组件。熟悉jdkNIO的同学应该知道ByteBuffer,正是因为jdk原生ByteBuffer使用比较复杂,某些场景下性能不是太好,netty开发团队重新设计了ByteBuf用以替代原生ByteBuffer。二、ByteBuf和ByteBuffer对比下面用图示来展示ByteBuf和ByteBuffer工作原理:①、ByteBufferByteBuffer依靠flip()来切换模式,在读模式下..

    2022年9月19日
    0
  • ireport教程_linear predictor

    ireport教程_linear predictor三元元算($F{username}.equals(“a”))?”它是a”:”它不是a”

    2022年9月4日
    2
  • PLSQL注册码,亲测,可用

    PLSQL注册码,亲测,可用注册码:ProductCode:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserialNumber:601769password:xs374ca1.登录PLSQL,选择取消2.选择帮助,注册3.在弹出的注册框内填写上面的注册码,点击注册即可使用

    2022年7月24日
    12
  • SpringBoot2 | SpringBoot启动流程源码分析(一)[通俗易懂]

    SpringBoot2 | SpringBoot启动流程源码分析(一)[通俗易懂]概述:前阵子看到了SpringCloud社区的一个开源项目,主要是对服务发现增强的功能。研究项目的时候发现代码简练,优雅,最主要是springioc和aop特性应用的得心应手。若非对源码有深入研究,不可能写出这么优秀的开源项目。另外在现有的springboot专栏中,大多数博文旨在应用,对一些中间件的整合之类,源码分析的博客数量有限。鉴于以上两方面,该系列应运而生。该系列主要还是Spri…

    2022年6月12日
    53
  • 怎样用python开发安卓app_python开发app可以商用嘛

    怎样用python开发安卓app_python开发app可以商用嘛显然,时下最流行的信息学技术就是深度学习了。深度学习(DeepLearning,DL)或阶层学习(hierarchicallearning)是机器学习的技术和研究领域之一,通过建立具有阶层结构的人工神经网络(ArtifitialNeuralNetworks,ANNs),在计算系统中实现人工智能。由于阶层ANN能够对输入信息进行逐层提取和筛选,因此深度学习具有表征学习(representat…

    2022年8月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号