谈谈JavaScript类型系统之Math
开门必读
math和其他对象不同,Math对象是一个静态对象,而不是构造函数。实际上,Math只是一个由Javascript设置的对象命名空间,用于存储数学函数
属性
Math.E自然对数的底数,即常量e的值(约等于2.718)
Math.PI派的值(约等于3.14159)
console.log(Math.E);//2.718281828459045
console.log(Math.PI);//3.141592653589793
Math.LN22的自然对数(约等于0.693)
Math.LN1010的自然对数(约等于2.302)
Math.LOG2E以2为底e的对数(约等于1.414)
Math.LOG10E以10为底e的对数(约等于0.434)
console.log(Math.LN2);//0.6931471805599453
console.log(Math.LN10);//2.302585092994046
console.log(Math.LOG2E);//1.4426950408889634
console.log(Math.LOG10E);//0.4342944819032518
Math.SQRT22的平方根(约等于1.414)
Math.SQRT1_21/2的平方根,即2的平方根的倒数(约等于0.707)
console.log(Math.SQRT2);//1.4142135623730951
console.log(Math.SQRT1_2);//0.7071067811865476
方法
这些方法都涉及到Number()隐式类型转换;若超出方法范围,将返回NaN
Math.min()返回一组数字中的最小值
Math.max()返回一组数字中的最大值
console.log(Math.min(1,2,3));//1
console.log(Math.max(1,2,3));//3
Math.ceil(num)向上舍入为整数
Math.floor(num)向下舍入为整数
Math.round(num)四舍五入为整数
console.log(Math.ceil(12.6));//13
console.log(Math.floor(12.6));//12
console.log(Math.round(12.6));//13
Math.abs(num)返回num的绝对值
Math.random()返回大于等于0小于1的一个随机数
console.log(Math.abs(-10));//10
console.log(Math.random());//0.741887615993619
Math.exp(num)返回Math.E的num次幂
Math.log(num)返回num的自然对数
Math.sqrt(num)返回num的平方根(x必须是大于等于0的数)
Math.pow(num,power)返回num的power次幂
console.log(Math.exp(0));//1
console.log(Math.log(10));//2.302585092994046
console.log(Math.sqrt(100));//10
console.log(Math.pow(10,2));//100
Math.sin(x)返回x的正弦值
Math.cos(x)返回x的余弦值
Math.tan(x)返回x的正切值
Math.asin(x)返回x的反正弦值(x必须是-1到1之间的数)
Math.acos(x)返回x的反余弦值(x必须是-1到1之间的数)
Math.atan(x)返回x的反正切值
Math.atan2(y,x)返回y/x的反正切值
console.log(Math.sin(30*Math.PI/180));//0.49999999999999994
console.log(Math.cos(60*Math.PI/180));//0.5000000000000001
console.log(Math.tan(45*Math.PI/180));//0.9999999999999999
console.log(Math.asin(1)*180/Math.PI);//90
console.log(Math.acos(1)*180/Math.PI);//0
console.log(Math.atan(1)*180/Math.PI);//45
console.log(Math.atan2(1,1)*180/Math.PI);//45
tips
[tips1]找到数组中的最大或最小值
varvalues=[1,2,3,4,5,6,7,8]; varmax=Math.max.apply(Math,values);//8
[tips2]从某个整数范围内随机选择一个值
value=Math.floor(Math.random()*可能值的总数+第一个可能的值)
[tips3]通过最小值和最大值随机选择一个值
functionselectFrom(lowerValue,upperValue){ varchoices=upperValue-lowerValue+1; returnMath.floor(Math.random()*choices+lowerValue); } varnum=selectFrom(2,10); console.log(num);