Math对象
Math是一个JavaScript内置对象,在window对象下的一个属性,
console.log(Math === window.Math) // true
而在数学中我们常用的计算以及参数都保存在Math对象中
# 圆周率π
console.log(Math.PI) // 3.1415926...
# 自然常数e
console.log(Math.E) // 2.7182882...
- 算术平方根 Math.sqrt()
console.log(Math.sqrt(2) * Math.sqrt(2)) // 2.0000000000000004约等于2
JS中的计算只能取到合理近似值(误差很小),请理性看待,合理使用
.1+.2; // 0.30000000000000004
- 指数 Math.pow()
console.log(Math.pow(2,3)) // 8 => 2 的 3 次方
- 取整
Math.floor(3.14) // 3 向下取整
Math.ceil(3.14) // 4 向上取整
Math.round(3.14) // 3 四舍五入
Math.trunc(3.14) // 3 删除小数部分
- 三角函数,反三角函数
计算相对位置,角度,游戏中常用到的边界碰撞判断等。
弧度制:弧度是一个角的张开程度,单位rad通常省略,有正负。
规定平面内一条线段绕端点旋转一周回到初始位置所扫过的角度为Math.PI*2,对应360deg,逆时针为正,顺时针为负数。
正弦: Math.sin()
某一角度的计算值。此角度(0,Math.PI/2)形成直角三角形对边除以斜边的值
Math.sin(Math.PI/6) // 0.49999999999999994约等于0.5
余弦:Math.cos
某一角度的计算值。此角度(0,Math.PI/2)形成直角三角形邻边比斜边的值
Math.cos(Math.PI/3) // 0.49999999999999994约等于0.5
正切:Math.tan
某一角度的计算值。此角度(0,Math.PI/2)形成直角三角形对边比邻的边的值
Math.tan(Math.PI/4) // 0.9999999999999999约等于1
反三角 asin/acos/stan,根据正弦值余弦值正切值返回对应的弧度
- 随机数 Math.random(), 返回大于0小于1的随机数
let num = Math.random()
封装 myRandon 随机生成大于n小于m的随机数
let myRndom = (n = 0, m = 1) => (Math.random()*(m-n)+n)
- 绝对值 Math.abs()
Math.abs(-1) // 1
Math.abs(1) // 1
- 最大值(Math.max())与最小值(Math.min())
let arr = [1,2,4,5,3]
Math.max(...arr) // 5
Math.min(...arr) // 1
- parseInt和parseFloat
解析传入的字符串,返回一个符合要求的10进制数,解析不出来返回NaN
// paseInt 返回整数
//传入两个参数:
//第一个是需要解析的字符串,必填
//第二个是进制基数2-36(0-9,a-z),当前传入的字符串的进制是多少,不填默认是10
parseInt("1123.asdasd"); // 1123
parseInt("a123"); // NaN
parseInt("Infinity"); // NaN
parseInt("123",16); // 以16进制识别123,值为1*16*16+2*16^1+3
parseInt("zzz",36); // 以36进制识别zzz,值为35*36*16+35*36+35
parseInt(123,2); // 123转字符串"123",2进制识别1 转2进制 1*Math.pow(2,0)
//paseFloat返回带小数点的浮点类型
//返回整数或者小数,支持科学记数法,解析不出来返回NaN
parseFloat("123.231"); // 123.231
parseFloat({toString(){return 1}}); // 1 底层是对传入的参数使用toString方法,或者valueOf方法
parseFloat([1,23,5]) // 1
parseFloat("asd"); // NaN
parseFloat("2e-3"); // 0.003
parseFloat("2.32E3"); // 2320
parseFloat("0x13"); // 0
- 保留小数点 num.toFixed(n) n 为要保留的小数位数
let num = 3.1415926
num.toFixed(2) // 3.14