好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

JavaScript Math

JavaScript Math

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

Math 对象提供了一些列的数学 方法 和常量,如三角 函数 、 随机 数、π等。

1. 数学 方法

数学 方法 其实就是常用的数学中的 函数 ,如三角 函数 。

其中用到较多的是使用 Math.random() 来产生 随机 数。

以下列举部分常用的 方法 。

1.1 Math.floor

Math.floor() 返回小于或等于 一个 给定数字的最大整数。

Math.floor就是对 一个 数进行向下取整。

  var  num1  =  Math .  floor  (  )  ; 
 var  num2  =  Math .  floor  (  )  ; 

console .  log  ( num1 )  ;   //  输出 :2 
console .  log  ( num2 )  ;   //  输出 :2 
 

因为是向下取整,不会进行四舍五入,所以不论是 2.4 还是 2.9 ,经过 Math.floor 处理后,都为 2 。

1.2 Math.ceil

Math.ceil() 函数 返回大于或等于 一个 给定数字的最小整数。

Math.ceil 就是对 一个 数进行向上取整。

  var  num1  =  Math .  ceil  (  )  ; 
 var  num2  =  Math .  ceil  (  )  ; 

console .  log  ( num1 )  ;   //  输出 :3 
console .  log  ( num2 )  ;   //  输出 :3 
 

与 Math.floor 相反,Math.ceil 向上取整,也不会进行四舍五入,所以结果都为 3 。

许多开发者经常会弄混 Math.floor 与 Math.ceil ,其实可以根据 方法 名的中译来记忆,floor 可以理解成地板,ceil 可以理解成天花板,所以前者是向下取整,后者是向上取整。

1.3 Math.random

Math 下的 random 方法 调用 后返回 一个 大于等于零且小于一 的 随机 数,即区间 [0, 1) 。

  var  random  =  Math .  random  (  )  ; 

console .  log  ( random )  ; 
 

可以尝试运行多次这段 代码 , random 变量的值出现一样的概率很低。

事实上 Math.random() 产生的 随机 数并不是真正的 随机 数,其返回的“ 随机 数”是由 一个 确定的算法得出的,这种 随机 数会称之为 伪 随机 数 。

1.3.1 随机 数应用

在需要 随机 数的需求时,大部分情况下不会是需要 一个 区间为 [0, 1) 的 随机 数,如按学号抽奖。

假设学号的范围是 1 至 100 ,那就需要产生 一个 1 至 100 之 间的 随机 数。

这样可以换个思路, 随机 数还是 生成 [0, 1) 范围的大小,但是将这个值放大到 [1, 100] 区 间的 范围。

所以就可以把 随机 数的结果先放大 100 倍,即 Math.random() * 100 ,这时候产生的数,区间就是 [0, 100) 。

因为最小值需要的是0,而不是1,就可以将这个 随机 数表达式 修改 成 Math.random() * 100 + 1 ,这时候区间就变成了 [1, 101) 。

最后只要保证右侧的区间不大于 100 即可,因为右侧区间取不到 101 ,所以可以对结果进行向下取整。

最终表达式为:

 Math .  floor  ( Math .  random  (  )   *    +   )  ; 
 

由此就可以推出 一个 较为通用的 随机 数公式:

  //  随机 数区间:[下限, 上限] 
Math .  floor  ( Math .  random  (  )   *  上限  +  下限 )  ; 
 

2. 数学常量

许多数学常量被作为 属性 放在 Math 对象下,如 欧拉常数(E) , 圆周率(PI) 。

  var  e  =  Math . E ; 
 var  pi  =  Math . PI ; 

console .  log  ( e )  ;   //  输出 :2.718281828459045 
console .  log  ( pi )  ;   //  输出 :3.141592653589793 
 

日常开发中,大部分情况下会选择自己维护 一个 常量,因为可以随时的统一的 修改 精度。

3. 常量与 方法 列表

因为都是常量与 方法 ,这里提供相应的列表供 快速 查阅, 内容 引用自 MDN 。

3.1 常量

常量 描述 Math.E 表示自然对数的底数(或称为基数),约等于 2.718。 Math.LN10 表示 10 的自然对数,约为 2.302。 Math.LN2 表示 2 的自然对数,约为 0.693。 Math.LOG10E 表示以 10 为底数,e 的对数,约为 0.434。 Math.LOG2E 表示以 2 为底数,e 的对数,约为 1.442。 Math.PI 表示 一个 圆的周长与直径的比例,约为 3.14159。 Math.SQRT1_2 属性 表示 1/2 的平方根,约为 0.707。 Math.SQRT2 表示 2 的平方根,约为 1.414。

3.2 方法

方法 描述 Math.abs 返回 一个 数的的绝对值。 Math.acos 返回 一个 数的反余弦值(单位为弧度)。 Math.acosh 返回 一个 数字的反双曲余弦值。 Math.asin 返回 一个 数值的反正弦(单位为弧度)。 Math.asinh 返回给定数字的反双曲正弦值 Math.atan 返回 一个 数值的反正切(以弧度为单位) Math.atan2 返回从原点(0,0)到(x,y)点的线段与x轴正方向之 间的 平面角度(弧度值)。 Math.atanh 函数 返回 一个 数值反双曲正切值。 Math.cbrt 返回任意数字的立方根。 Math.ceil 返回大于或等于 一个 给定数字的最小整数。 Math.clz32 返回 一个 数字在转换成 32 无符号整形数字的二进制形式后, 开头的 0 的个数。 Math.cos 返回 一个 数值的余弦值。 Math.cosh 返回数值的双曲余弦 函数 。 Math.exp 函数 返回 ex,x 表示参数,e 是欧拉常数(Euler’s constant),自然对数的底数。 Math.expm1 函数 返回 Ex - 1, 其中 x 是该 函数 的参数, E 是自然对数的底数。 Math.floor 返回小于或等于 一个 给定数字的最大整数。 Math.fround 将任意的数字转换为离它最近的单精度浮点数形式的数字。 Math.hypot 函数 返回它的所有参数的平方和的平方根。 Math.imul 该 函数 将两个参数分别转换为 32 位整数,相乘后返回 32 位结果,类似 C 语言的 32 位整数相乘。 Math.log 返回 一个 数的自然对数。 Math.log10 函数 返回 一个 数字以 10 为底的对数。 Math.log1p 函数 返回 一个 数字加1后的自然对数 (底为 E), 即log(x+1)。 Math.log2 函数 返回 一个 数字以 2 为底的对数。 Math.max 返回一组数中的最大值。 Math.min 返回零个或更多个数值的最小值。 Math.pow 函数 返回基数(base)的指数(exponent)次幂,即 base exponent 。 Math.random 函数 返回 一个 浮点, 伪 随机 数在范围从0到小于1,也就是说,从0( 包括 0)往上,但是不 包括 1(排除1)。 Math.round 函数 返回 一个 数字四舍五入后最接近的整数。 Math.sign 函数 返回 一个 数字的符号, 指示数字是正数,负数还是零。 Math.sin 函数 返回 一个 数值的正弦值。 Math.sinh 函数 返回 一个 数字(单位为角度)的双曲正弦值。 Math.sqrt 函数 返回 一个 数的平方根。 Math.tan 返回 一个 数值的正切值。 Math.tanh 函数 将会返回 一个 数的双曲正切 函数 值。 Math.trunc 方法 会将数字的小数部分去掉,只保留整数部分。

4. 小结

Math 对象包含了很多数学 方法 与常量,较常用的是用于产生伪 随机 数的 Math.random ,根据特性可以推出 随机 数 [下限, 上限] 的 生成 公式 Math.floor(Math.random() * 上限 + 下限); 。

尽量将 Math 对象下的 方法 过一遍,留住印象,避免造不必要的轮子。

JavaScript Date ? ?JavaScript Function

查看更多关于JavaScript Math的详细内容...

  阅读:37次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源