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声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did92418