美文网首页
Math函数

Math函数

作者: 元宇宙编程 | 来源:发表于2021-11-15 09:13 被阅读0次
数据基本类型

JavaScript 对数值进行四舍五入常见操作有以下6种:

ceil - 向上取整

floor - 向下取整

round - 四舍五入

toFixed - 固定精度

toPrecision - 固定长度

parseInt - 取整(位操作符)
  • 1、向上取整: ceil

ceil是天花板的意思,表示在一个数值之上,且距离该数最近的整数。ceil 是 Math 对象的静态方法,需要传递一个参数,其调用方法如下

Math.ceil(12.34); //13

Math.ceil(12.68); //13
  • 2、向下取整: floor

floor是地板的意思,表示在一个数值之下,且距离该数最近的整数。floor 是 Math 对象的静态方法,需要传递一个参数,其调用方法如下:

Math.floor(12.34);//12

Math.floor(12.68);//
  • 3、四舍五入: round

round 的作用是对一个浮点数进行四舍五入,并保留整数位。round 也是 Math 对象的静态方法,也需要传递一个参数,其调用方法如下:

Math.round(12.34);//12

Math.round(12.54);//13
  • 4、固定精度: toFixed

toFixed和上面三个方法不同,它是 Number 原型上实现的一个方法,其作用是对一个浮点数进行四舍五入并保留固定小数位。 toFixed 需要传递一个参数,其调用方式如下:

100.456001.toFixed(2);//100.46

100.456001.toFixed(3);//100.456
  • 5、固定长度: toPrecision

toPrecison 也是 Number 原型上实现的一个处理浮点数的方法,和 toFixed 不同的是,它是对一个浮点数进行四舍五入并保留固定长度的有效数字,包括整数部分。

99.456001.toPrecision(5);//99.456

100.456001.toPrecision(5);//100.46
  • 6、取整: parseInt(位操作符)

    parseInt是 全局对象 window上的一个方法,其作用是对一个可转换的数值取整,分为以下两种情况:

    将字符串数值转化为 Number 整数,对字符串的每一个字符进行转化,直到遇到不可转化的字符(包括小数点)停止

    对浮点类型数值取整,忽略小数部分,不做四舍五入处理

     //字符串数值parseInt('100') ; // 100
    
      parseInt('100axt'); //100
    
      parseInt('100xh20'); //100
    
      parseInt('100.78'); //123
    
      //Number 类型
    
       parseInt(100.12) ; // 100
    
       parseInt(100.78); //100
    

除过 parseInt 可以取整外,通过一些 位操作符 也可以实现取整:

  | 0 : 和 0 进行 按位或 操作,原值不变

  ~~ : 两次 按位非 操作得到的也是原值

  >>0: 右移0位

  <<0: 左移0位

 >>>0: 无符号右移0位

这些 位操作符 在实现取整操作时,会表现出一些共同的特征:

对于 Number 类型来说,直接应用位操作, 和 parseInt 得到的结果几乎一样;

对于其他类型,内部会先通过 Number() 将其转换为一个数值,然后再应用位操作。

对特殊 NaN 和 Infinity 值应用位操作时,这两个值都会被当成 0 来处理 。

 //Number 类型:直接应用位操作

 ~~ 100.12; // 100

 100.78 | 0; // 100

 100.45 >> 0; // 100

 100.50 << 0; // 100

 100.96 >>> 0; // 100

//其他类型:先使用 Number() 转换为数值,再应用位操作

~~ '100.12' // 100, Number('100.12') == 100.12

'100.50' >> 0; // 100,Number('100.50') == 100.50

'100.96' << 0; // 100,Number('100.96') == 100.96

 ~~ 'abc' // 0 , Number('abc') == NaN

 '12abc' >> 0; // 0, Number('12abc') == NaN

 undefined | 0 ; // 0, Number(undefined) == NaN

 ~~null; // 0 , Number(null) == 0

 true >> 0; // 1 , Number(true) == 1

 false >> 0; //0 , Number(false) == 0

 [] << 0; // 0 , Number([]) == 0

 ~~NaN; // 0

 Infinity >>> 0; // 0

位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。ECMAScript 中的所有数值都以 IEEE-754 64 位格式存储,但位操作符并不直接操作64 位的值。而是先将 64 位的值转换成 32 位的整数,然后执行操作,最后再将结果转换回 64 位。这就是位操作符能实现取整的原因。

鉴于这样的实现机制,JavaScript 中的位运算符只能支持 32 位数字,大于32位的数字在底层转换时会存在溢出问题,而且多了一层转换也会降低位运算的效率 。但尽管这样,位操作符在对数字取整时,还是要比 parseInt 快得多,性能有显著的提升。

相关文章

  • Python学习笔记(2014.10.02)

    math模块(数学函数): 使用math模块 import mathdir(math) 这句可查...

  • python--math模块

    Python Math 函数 必须 import math(算术函数,三角函数,双曲函数,幂函数和对数函数,复数...

  • 2018-07-28

    函数的返回多个值: import math #导入math包,并允许后续代码引用math包中的sin,cos函数 ...

  • Java数学函数

    JavaScript_Math函数与属性按功能分类 Math三角函数与属性 Math.sin() -- 返回数字的...

  • c/c++常用标准头文件函数总结

    一、常用函数 1、数学函数头文件 #include 或者 #include ...

  • Java中的Math对象

    Math Math是一个内置对象, 它具有数学常数和函数的属性和方法。不是一个函数对象。 Math的属性 Math...

  • lua随机函数-math.random

    lua的随机函数: math.randomseed() 设置seed math...

  • 算法一

    重要的Math函数: Math.ceil() 向上取整 Math.floor() 向下取整 Math.abs 求绝...

  • JavaScript的Math对象

    原文 博客原文 大纲 前言1、Math对象的值属性2、Math对象的函数属性3、Math对象的函数的使用 前言 M...

  • Date Math

    6.5 date math对象的学习 Math对象 Math对象:仅专门提供数学计算的方法Math对象没有构造函数...

网友评论

      本文标题:Math函数

      本文链接:https://www.haomeiwen.com/subject/poannltx.html