前几天翻阅《JavaScript权威指南》,看到了Math对象,于是汇总了一下。

Math对象不同于其他的对象,它可以说是一个公共数学类,里面有很多数学方法,用于各种数学运算,但是Math对象不需要构造,对于其中的方法直接使用即可。

1、常量(即属性)

下面是它们的值:

  1. document.write("Math.E = "+Math.E+"<br>");
  2. document.write("Math.LN2 = "+Math.LN2+"<br>");
  3. document.write("Math.LN10 = "+Math.LN10+"<br>");
  4. document.write("Math.LOG2E = "+Math.LOG2E+"<br>");
  5. document.write("Math.LOG10E = "+Math.LOG10E+"<br>");
  6. document.write("Math.PI = "+Math.PI+"<br>");
  7. document.write("Math.SQRT1_2 = "+Math.SQRT1_2+"<br>");
  8. document.write("Math.SQRT2 = "+Math.SQRT2+"<br>");
  9. 输出结果:
  10. Math.E = 2.718281828459045
  11. Math.LN2 = 0.6931471805599453
  12. Math.LN10 = 2.302585092994046
  13. Math.LOG2E = 1.4426950408889634
  14. Math.LOG10E = 0.4342944819032518
  15. Math.PI = 3.141592653589793
  16. Math.SQRT1_2 = 0.7071067811865476
  17. Math.SQRT2 = 1.4142135623730951

2、abs() 方法可返回数的绝对值

Math.abs(x);x必须为一个数值,此数可以是整数,小数都可以
document.write(Math.abs(-2.77));//输出2.77

3、acos(x) 返回数的反余弦值。

Math.acos(x);x必须是 -1.0 ~ 1.0 之间的数
如果x不在上述范围,则返回NaN

4、asin() 方法可返回一个数的反正弦值。

Math.asin(x);x必须是一个数值,该值介于 -1.0 ~ 1.0 之间。
如果参数 x 超过了 -1.0 ~ 1.0 的范围,那么浏览器将返回 NaN。

5、atan() 方法可返回数字的反正切值。

Math.atan(x);x 必需。必须是一个数值。
返回的值是 -PI/2 到 PI/2 之间的弧度值。

6、atan2() 方法可返回从 x 轴到点 (x,y) 之间的角度。

Math.atan2(y,x)
-PI 到 PI 之间的值,是从 X 轴正向逆时针旋转到点 (x,y) 时经过的角度。

7、ceil() 方法可对一个数进行上舍入。

什么是上舍入?即大于等于 x,并且与它最接近的整数。
Math.ceil(x);x 必需。必须是一个数值。

  1. document.write(Math.ceil(0.60) + "<br />")
  2. document.write(Math.ceil(0.40) + "<br />")
  3. document.write(Math.ceil(5) + "<br />")
  4. document.write(Math.ceil(5.1) + "<br />")
  5. document.write(Math.ceil(-5.1) + "<br />")
  6. document.write(Math.ceil(-5.9))
  7. 输出为:
  8. 1
  9. 1
  10. 5
  11. 6
  12. -5
  13. -5
  14. 对于负数,向下取值,你懂的

8、cos() 方法可返回一个数字的余弦值。

Math.cos(x);x 必需。必须是一个数值。 返回的是 -1.0 到 1.0 之间的数。、
x其实要求是输入一个弧度值,例如--->
π代表的是180°等,π即Math.PI
document.write(Math.cos(Math.PI));
输出为-1

但是假如:

  1. document.write(Math.cos(Math.PI/2));
  2. 输出为:6.123233995736766e-17

  1. document.write(Math.cos(Math.PI/3));
  2. 输出为:0.5000000000000001

为什么会出现这些怪异的数字呢?

其实大家都知道document.write(Math.cos(Math.PI/2));应该输出0,而在Javascript中可能没有求的0,所以就用了一个非常非常小的数代替
类似的document.write(Math.cos(Math.PI/3));应该是0.5才对,但是却在最后面多了一位
这些是小问题,没啥好说的,本身寄存器就不可能表示所有数的,因此在计算过程中出现差错也很正常

9、exp() 方法可返回 e 的 x 次幂的值。

Math.exp(x);x 必需。任意数值或表达式。被用作指数。
返回 e 的 x 次幂。e 代表自然对数的底数,其值近似为 2.71828。
document.write(Math.exp(1) + "<br />");//输出2.718281828459045

10、floor() 方法可对一个数进行下舍入。

和ceil()方法相对应,floor()方法是对一个数进行下舍入,即小于等于 x,且与 x 最接近的整数。
Math.floor(x);

  1. document.write(Math.floor(0.60) + "<br />")
  2. document.write(Math.floor(0.40) + "<br />")
  3. document.write(Math.floor(5) + "<br />")
  4. document.write(Math.floor(5.1) + "<br />")
  5. document.write(Math.floor(-5.1) + "<br />")
  6. document.write(Math.floor(-5.9))
  7. 输出为:
  8. 0
  9. 0
  10. 5
  11. 5
  12. -6
  13. -6
  14. 对于负数,向上取值,你懂的

11、log() 方法可返回一个数的自然对数。

Math.log(x);//参数 x 必须大于 0,大于0则结果为NaN,等于0则为-Infinity

  1. document.write(Math.log(2.7183) + "<br />")
  2. document.write(Math.log(2) + "<br />")
  3. document.write(Math.log(1) + "<br />")
  4. document.write(Math.log(0) + "<br />")
  5. document.write(Math.log(-1))
  6. 输出为:
  7. 1.0000066849139877
  8. 0.6931471805599453
  9. 0
  10. -Infinity
  11. NaN

12、max() 方法可返回两个指定的数中带有较大的值的那个数。

Math.max(x...),//x 为0或多个值。在 ECMASCript v3 之前,该方法只有两个参数。
返回值:
参数中最大的值。
如果没有参数,则返回 -Infinity。
如果有某个参数为 NaN,或是不能转换成数字的非数字值,则返回 NaN。
如下例:

  1. document.write(Math.max(5,3,8,1));//
  2. document.write(Math.max(5,3,8,'M'));//NaN
  3. document.write(Math.max(5));//
  4. document.write(Math.max());//-Infinity

13、min() 方法可返回指定的数字中带有最低值的数字。

Math.min(x,y);x为0或多个值。在 ECMASCript v3 之前,该方法只有两个参数。
返回值:
参数中最小的值。
如果没有参数,则返回 Infinity。
如果有某个参数为 NaN,或是不能转换成数字的非数字值,则返回 NaN。
和max()方法使用类似

14、pow() 方法可返回 x 的 y 次幂的值。

Math.pow(x,y);//
x 必需。底数。必须是数字。
y 必需。幂数。必须是数字。
返回值:
如果结果是虚数或负数,则该方法将返回 NaN。如果由于指数过大而引起浮点溢出,则该方法将返回 Infinity。
如下例:

  1. document.write(Math.pow()+'<br>');
  2. document.write(Math.pow(2)+'<br>');
  3. document.write(Math.pow(2,2)+'<br>');
  4. document.write(Math.pow(2,2,2)+'<br>');
  5. document.write(Math.pow('M',2)+'<br>');
  6. 输出:
  7. NaN
  8. NaN
  9. 4
  10. 4
  11. NaN

15、random() 方法可返回介于 0 ~ 1 之间的一个随机数。

Math.random();//无参
返回:
0.0 ~ 1.0 之间的一个伪随机数。
何为伪随机数?
真正意义的随机数是某次随机事件产生的结果,经过无数次后表现为呈现某种概率论,它是不可预测的
而伪随机数是根据伪随机算法实现的,它是采用了一种模拟随机的算法,因此被称为伪随机数

  1. document.write(Math.random())//0.12645312909485157

16、round() 方法可把一个数字舍入为最接近的整数。

Math.round(x),x 必需。必须是数字。
对于 0.5,该方法将进行上舍入。
例如,3.5 将舍入为 4,而 -3.5 将舍入为 -3。
其实就感觉此方法是用ceil()和floor()方法结合实现的

  1. document.write(Math.round(0.60) + "<br />")
  2. document.write(Math.round(0.50) + "<br />")
  3. document.write(Math.round(0.49) + "<br />")
  4. document.write(Math.round(-4.40) + "<br />")
  5. document.write(Math.round(-4.60))
  6. 输出为:
  7. 1
  8. 1
  9. 0
  10. -4
  11. -5
    对于负数,则和整数取值相反

17、sin() 方法可返回一个数字的正弦。

Math.sin(x),x 必需。一个以弧度表示的角。将角度乘以 0.017453293 (2PI/360)即可转换为弧度。
返回值:
参数 x 的正弦值。返回值在 -1.0 到 1.0 之间。

  1. document.write(Math.sin(3) + "<br />")
  2. document.write(Math.sin(-3) + "<br />")
  3. document.write(Math.sin(0) + "<br />")
  4. document.write(Math.sin(Math.PI) + "<br />")
  5. document.write(Math.sin(Math.PI/2)
  6. 输出为:
  7. 0.1411200080598672
  8. -0.1411200080598672
  9. 0
  10. 1.2246063538223772e-16
  11. 1

18、sqrt() 方法可返回一个数的平方根。

Math.sqrt(x);//x 必需,必须是大于等于 0 的数。
返回值:
参数 x 的平方根。如果 x 小于 0,则返回 NaN。
它相当于Math.pow(x,0.5);

19、tan() 方法可返回一个表示某个角的正切的数字。

Math.tan(x),//x 必需。一个以弧度表示的角。将角度乘以 0.017453293 (2PI/360)即可转换为弧度。

下面再再列举一些ES6中,我觉得常用的Math方法。

1.trunc()方法用于去除一个数的小数部分,返回整数部分。

  1. Math.trunc(4.1) //
  2. Math.trunc(4.9) //
  3. Math.trunc(-4.1) // -4
  4. Math.trunc(-4.9) // -4
  5. Math.trunc(-0.1234) // -0
  6. Math.trunc('123.456')//

对于字符串数字,Math.trunc内部使用Number方法将其先转为数值。

2.sign()方法用来判断一个数是正数、负数、还是零。

它会返回五种值。

  • 参数为正数,返回+1;
  • 参数为负数,返回-1;
  • 参数为0,返回0;
  • 参数为-0,返回-0;
  • 其他值,返回NaN。

  

  1. Math.sign(-5) // -1
  2. Math.sign(5) // +1
  3. Math.sign(0) // +0
  4. Math.sign(-0) // -0
  5. Math.sign(NaN) // NaN
  6. Math.sign('foo'); // NaN
  7. Math.sign(); // NaN

3.cbrt()用来计算一个数的立方根。

  1. Math.cbrt(-1) // -1
  2. Math.cbrt(0) //
  3. Math.cbrt(1) //
  4. Math.cbrt(2) // 1.2599210498948734

大概常用到的就以上这些了,如果经常做图像处理的话,三角函数是必须掌握的,拿起高中的课本复习一下吧。

Math对象常用方法汇总的更多相关文章

  1. Math对象常用方法(取整细节)

    Math 对象 Math 对象用于执行数学任务. 1.常用属性: 1.E :返回算术常量e,即自然对数的底数(约2.718) 2.PI :返回圆周率,约3.14159 2.常用方法    Math.方 ...

  2. JS取整,四舍五入,取绝对值等Math对象常用方法

    function f1(type,num1) { switch(type) { case 'floor': return Math.floor(num1);//取整或下舍入 break; case ' ...

  3. Math对象常用方法

    1.Math.ceil(x) 返回x的向上取整. var a=Math.ceil(9.1); var b=Math.ceil(-9.1) console.log(a); console.log(b); ...

  4. JavaScript Math 对象常用方法

    Math.abs(x):可返回数的绝对值 Math.ceil(x):向上取整 Math.floor(x):向下取整 Math.max(x,y):最大值 Math.min(x,y):最小值 Math.r ...

  5. JSP中request对象常用方法汇总

    setAttribute(String name,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值 getAt ...

  6. Math对象常用方法介绍

     <script>         /* 001-Math.abs()  绝对值 */         console.log(Math.abs(123), Math.abs(-998), ...

  7. 常用的Date对象和Math对象方法

    Date对象方法: 当前用户本地时间 let time = new Date(); 获取整数年 console.log(time.getFullYear()); 获取当前月(月份要加1) consol ...

  8. js内置对象常用方法

    JS内置对象: ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储.转化和表达 ● Array对象:提供一个数组的模型.存储大量有 ...

  9. JavaScript Math 对象的常用方法

    JavaScript Math 对象 Math 对象 Math 对象用于执行数学任务. 使用 Math 的属性和方法的语法: var pi_value=Math.PI; var sqrt_value= ...

随机推荐

  1. 重新发现梯度下降法--backtracking line search

    一直以为梯度下降很简单的,结果最近发现我写的一个梯度下降特别慢,后来终于找到原因:step size的选择很关键,有一种叫backtracking line search的梯度下降法就非常高效,该算法 ...

  2. 年底奉献-QT编写视频监管平台(开源)

    忙忙碌碌又是一年,算算自己毕业四年半,一直在现在这家公司做研发外加总经理助理,研发起初用的VB.NET,而后全面转为C#,最后又全面转为QT,都是由于项目需要,算下来自己搞QT编程也已经四年了,201 ...

  3. python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte

    今天折腾了一天,安装pyspider,由于依赖包众多,而且搜索到所有信息多是在linux平台和mac平台下的安装教程.可怜我试了n多版本,一直不成功. 最后发现有人说python的版本,不能低于2.7 ...

  4. SQL截取字段字符串的方法

    set @str='WX15-53-H-53-99-15-335-23'; select @str as '字符串' select len(@str) as '字符长度' select charind ...

  5. 解决错误: java.lang.NoClassDefFoundError: antlr/RecognitionException

    网络质量不好的情况下,访问maven.org网站下载jar包,很有可能下载的包不完整或损坏的(表面看不出来):所以,最好的办法就是-直接到maven网站下载,然后放到对应的.m2目录,然后eclips ...

  6. Netty5 + HTTPS 练习

    本次以<Netty权威指南>第十章里面的例子为基础修改而来 HttpsFileServerHandler.java package com.jieli.nettytest.httpsfil ...

  7. 在线头像上传(js)

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. 加快MySQL逻辑恢复速度的方法和参数总结

    日常工作中经常会有需要从mysqldump导出的备份文件恢复数据库的情况,相比物理备份恢复这种方式在恢复时间上往往显得力不从心. 本文就总结了几个对于逻辑备份恢复有加速作用的参数和操作 注意:我们的大 ...

  9. CSS3伪类和伪元素的特性和区别

    前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其 ...

  10. CentOS6.5菜鸟之旅:安装输入法(小呀小企鹅)

    一.前言 假如在登录系统的时候语言选择了中文,那么是系统会自带ibus的中文输入法.但由于我打算用英文版,于是就被小企鹅输入法(FCITX)折腾了两个晚上. 二.检查系统编码 在bash中输入 loc ...