作者 | 阮一峰
Math
是 JavaScript 的原生对象,提供各种数学功能。该对象不是构造函数,不能生成实例,所有的属性和方法都必须在Math
对象上调用。
1、静态属性
Math
对象的静态属性,提供以下一些数学常数。
Math.E
:常数e
。Math.LN2
:2 的自然对数。Math.LN10
:10 的自然对数。Math.LOG2E
:以 2 为底的e
的对数。Math.LOG10E
:以 10 为底的e
的对数。Math.PI
:常数π
。Math.SQRT1_2
:0.5 的平方根。Math.SQRT2
:2 的平方根。
Math.E // 2.718281828459045Math.LN2 // 0.6931471805599453Math.LN10 // 2.302585092994046Math.LOG2E // 1.4426950408889634Math.LOG10E // 0.4342944819032518Math.PI // 3.141592653589793Math.SQRT1_2 // 0.7071067811865476Math.SQRT2 // 1.4142135623730951
这些属性都是只读的,不能修改。
2、静态方法
Math
对象提供以下一些静态方法。
Math.abs()
:绝对值Math.ceil()
:向上取整Math.floor()
:向下取整Math.max()
:最大值Math.min()
:最小值Math.pow()
:指数运算Math.sqrt()
:平方根Math.log()
:自然对数Math.exp()
:e
的指数Math.round()
:四舍五入Math.random()
:随机数
2.1、Math.abs()
Math.abs
方法返回参数值的绝对值。
Math.abs(1) // 1Math.abs(-1) // 1
2.2、Math.max(),Math.min()
Math.max
方法返回参数之中最大的那个值,Math.min
返回最小的那个值。如果参数为空, Math.min
返回Infinity
, Math.max
返回-Infinity
。
Math.max(2, -1, 5) // 5Math.min(2, -1, 5) // -1Math.min() // InfinityMath.max() // -Infinity
2.3、Math.floor(),Math.ceil()
Math.floor
方法返回小于参数值的最大整数(地板值)。
Math.floor(3.2) // 3Math.floor(-3.2) // -4
Math.ceil
方法返回大于参数值的最小整数(天花板值)。
Math.ceil(3.2) // 4Math.ceil(-3.2) // -3
这两个方法可以结合起来,实现一个总是返回数值的整数部分的函数。
function ToInteger(x) {
x = Number(x);return x < 0 ? Math.ceil(x) : Math.floor(x);
}
ToInteger(3.2) // 3
ToInteger(3.5) // 3
ToInteger(3.8) // 3
ToInteger(-3.2) // -3
ToInteger(-3.5) // -3
ToInteger(-3.8) // -3
上面代码中,不管正数或负数,ToInteger
函数总是返回一个数值的整数部分。
2.4、Math.round()
Math.round
方法用于四舍五入。
Math.round(0.1) // 0Math.round(0.5) // 1Math.round(0.6) // 1// 等同于Math.floor(x + 0.5)
注意,它对负数的处理(主要是对0.5
的处理)。
Math.round(-1.1) // -1Math.round(-1.5) // -1Math.round(-1.6) // -2
2.5、Math.pow()
Math.pow
方法返回以第一个参数为底数、第二个参数为幂的指数值。
// 等同于 2 ** 2Math.pow(2, 2) // 4// 等同于 2 ** 3Math.pow(2, 3) // 8
下面是计算圆面积的方法。
var radius = 20;var area = Math.PI * Math.pow(radius, 2);
2.6、Math.sqrt()
Math.sqrt
方法返回参数值的平方根。如果参数是一个负值,则返回NaN
。
Math.sqrt(4) // 2Math.sqrt(-4) // NaN
2.7、Math.log()
Math.log
方法返回以e
为底的自然对数值。
Math.log(Math.E) // 1Math.log(10) // 2.302585092994046
如果要计算以10为底的对数,可以先用Math.log
求出自然对数,然后除以Math.LN10
;求以2为底的对数,可以除以Math.LN2
。
Math.log(100)/Math.LN10 // 2Math.log(8)/Math.LN2 // 3
2.8、Math.exp()
Math.exp
方法返回常数e
的参数次方。
Math.exp(1) // 2.718281828459045Math.exp(3) // 20.085536923187668
2.9、Math.random()
Math.random()
返回0到1之间的一个伪随机数,可能等于0,但是一定小于1。
Math.random() // 0.7151307314634323
任意范围的随机数生成函数如下。
function getRandomArbitrary(min, max) {return Math.random() * (max - min) + min;
}
getRandomArbitrary(1.5, 6.5)// 2.4942810038223864
任意范围的随机整数生成函数如下。
function getRandomInt(min, max) {return Math.floor(Math.random() * (max - min + 1)) + min;
}
getRandomInt(1, 6) // 5
返回随机字符的例子如下。
function random_str(length) {var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
ALPHABET += 'abcdefghijklmnopqrstuvwxyz';
ALPHABET += '0123456789-_';var str = '';for (var i = 0; i < length; ++i) {var rand = Math.floor(Math.random() * ALPHABET.length);
str += ALPHABET.substring(rand, rand + 1);
}return str;
}
random_str(6) // "NdQKOr"
上面代码中,random_str
函数接受一个整数作为参数,返回变量ALPHABET
内的随机字符所组成的指定长度的字符串。
2.10、三角函数方法
Math
对象还提供一系列三角函数方法。
Math.sin()
:返回参数的正弦(参数为弧度值)Math.cos()
:返回参数的余弦(参数为弧度值)Math.tan()
:返回参数的正切(参数为弧度值)Math.asin()
:返回参数的反正弦(返回值为弧度值)Math.acos()
:返回参数的反余弦(返回值为弧度值)Math.atan()
:返回参数的反正切(返回值为弧度值)
Math.sin(0) // 0Math.cos(0) // 1Math.tan(0) // 0Math.sin(Math.PI / 2) // 1Math.asin(1) // 1.5707963267948966Math.acos(1) // 0Math.atan(1) // 0.7853981633974483
本章节完
推荐阅读系列章节
【JavaScript 教程】入门篇-导论
【JavaScript 教程】入门篇-JavaScript 语言的历史
【JavaScript 教程】入门篇-JavaScript 的基本语法
【JavaScript 教程】数据类型-概述
【JavaScript 教程】数据类型-null, undefined 和布尔值
【JavaScript 教程】数据类型-数值
【JavaScript 教程】数据类型-字符串
【JavaScript 教程】数据类型-对象
【JavaScript 教程】数据类型-函数
【JavaScript 教程】数据类型-数组
【JavaScript 教程】运算符—算术运算符
【JavaScript 教程】运算符—比较运算符
【JavaScript 教程】运算符—布尔运算符
【JavaScript 教程】运算符—二进制位运算符
【JavaScript 教程】运算符—其他运算符,运算顺序
【JavaScript 教程】语法专题—数据类型的转换
【JavaScript 教程】语法专题—错误处理机制
【JavaScript 教程】语法专题—编程风格
【JavaScript 教程】语法专题—console 对象与控制台
【JavaScript 教程】标准库—Object 对象
【JavaScript 教程】标准库—属性描述对象
【JavaScript 教程】标准库—Array 对象
【JavaScript 教程】标准库—包装对象
【JavaScript 教程】标准库—Boolean 对象
【JavaScript 教程】标准库—Number 对象
【JavaScript 教程】标准库—String 对象