上一节我们详细介绍了JS中的Array数组对象,本节我们将要学习JS中的Math对象。JS的Math对象是一个内置对象,它包含了一些有用的数学函数,可以用于执行各种数学运算。这些函数可以处理各种数学运算,包括加法、减法、乘法、除法、幂运算、对数、三角函数等。
例如,Math.sqrt(x)可以返回x的平方根,Math.sin(x)可以返回x的正弦值,等等。
/* 返回平方根 */ console.log(Math.sqrt(4));//2 /* 返回余弦值(数字->弧度才能作为参数) */ console.log(Math.cos(60 * Math.PI / 180)); // 0.5000000000000001
此外,Math对象还有一些属性,如Math.E(表示自然常数e)和Math.LN10(表示以10为底的自然对数)。
/* e */ console.log(Math.E);//2.718281828459045 /* Math.LN10 */ console.log(Math.LN10);//2.302585092994046
值得注意的是,Math对象中的函数和属性都是静态的,也就是说它们在全局作用域中,可以直接通过名称调用,而无需创建Math对象实例。下面我们通过表格展示一下Math的常用方法:
| 函数(带参数) | 功能 |
|---|---|
| 数学运算 | |
Math.abs(x) | 返回x的绝对值 |
Math.sqrt(x) | 返回x的平方根 |
Math.pow(x, y) | 返回x的y次幂 |
Math.exp(x) | 返回e的x次幂 |
Math.log(x) | 返回x的自然对数 |
Math.log10(x) | 返回x的以10为底的对数 |
Math.log2(x) | 返回x的以2为底的对数 |
| 舍入方法 | |
Math.round(x) | 返回x四舍五入后的整数 |
Math.ceil(x) | 返回x向上取整后的整数 |
Math.floor(x) | 返回x向下取整后的整数 |
Math.trunc(x) | 返回x的整数部分 |
| 最大值最小值 | |
Math.max(x, y, ..., n) | 返回参数中的最大值 |
Math.min(x, y, ..., n) | 返回参数中的最小值 |
| 三角函数 | |
Math.sin(x) | 返回x的正弦值(x为弧度) |
Math.cos(x) | 返回x的余弦值(x为弧度) |
Math.tan(x) | 返回x的正切值(x为弧度) |
Math.asin(x) | 返回x的反正弦值 |
Math.acos(x) | 返回x的反余弦值 |
Math.atan(x) | 返回x的反正切值 |
Math.atan2(y, x) | 返回y/x的反正切值 |
| 随机数 | |
Math.random() | 返回0到1之间的随机数 |
| 其他方法 | |
Math.sign(x) | 返回x的符号(正负号) |
Math.hypot(x, y, ..., n) | 返回所有参数平方和的平方根 |
这里我们简单演示Math的常用方法:
/* Math.sqrt(x) - 返回x的平方根 */ console.log(Math.sqrt(16)); // 4 /* Math.pow(x, y) - 返回x的y次幂 */ console.log(Math.pow(2, 3)); // 8 /* Math.exp(x) - 返回e的x次幂 */ console.log(Math.exp(1)); // 2.718281828459045 /* Math.round(x) - 四舍五入 */ console.log(Math.round(4.7)); // 5 /* Math.ceil(x) - 向上取整 */ console.log(Math.ceil(4.1)); // 5 /* Math.floor(x) - 向下取整 */ console.log(Math.floor(4.9)); // 4
Math对象内有一些常用的静态内置属性,比如我们需要圆周率的时候就不用手写了,直接调用Math.PI来获取。
Math.PI | 圆周率π ≈ 3.14159 |
Math.E | 自然常数e ≈ 2.71828 |
Math.LN2 | 2的自然对数 ≈ 0.693 |
Math.LN10 | 10的自然对数 ≈ 2.302 |
Math.SQRT2 | 2的平方根 ≈ 1.414 |
Math.SQRT1_2 | 1/2的平方根 ≈ 0.707 |
总结:学习并熟练使用这些方法,我们就可以在JS中进行各种复杂的数学运算,而无需手动进行计算,从而大大提高开发效率。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程