前面的话

  javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现。和其他对象不同,Math只是一个静态对象,并没有Math()构造函数。实际上,Math只是一个由javascript设置的对象命名空间,用于存储数学常量和函数。本文将详细介绍Math对象

  1. new Math();//Uncaught TypeError: Math is not a constructor

常量

  Math对象一共有8个常量,主要包括对数、派值和平方根三类

对数

  1. Math.E 自然对数的底数,即常量e的值(约等于2.)
  2. Math.LN2 2的自然对数(约等于0.)
  3. Math.LN10 10的自然对数(约等于2.)
  4. Math.LOG2E 2为底e的对数(约等于1.)
  5. Math.LOG10E 10为底e的对数(约等于0.)
  1. console.log(Math.E);//2.718281828459045
  2. console.log(Math.LN2);//0.6931471805599453
  3. console.log(Math.LN10);//2.302585092994046
  4. console.log(Math.LOG2E);//1.4426950408889634
  5. console.log(Math.LOG10E);//0.4342944819032518

派值

  1. Math.PI 派的值(约等于3.)
  2. console.log(Math.PI);//3.141592653589793

平方根

  1. Math.SQRT2 2的平方根(约等于1.)
  2. Math.SQRT1_2 /2的平方根,即2的平方根的倒数(约等于0.)
  1. console.log(Math.SQRT2);//1.4142135623730951
  2. console.log(Math.SQRT1_2);//0.7071067811865476

函数

  Math对象一共有18个静态函数,主要包括最值、舍入、随机数、绝对值、三角函数及乘方开方6类

  [注意]这些函数都涉及到Number()隐式类型转换。若超出范围,将返回NaN

最值

  Math对象的min()和max()方法用于确定一组数值中的最小和最大值,这两个方法都可以接收任意个数值参数

Math.max()

  返回参数中最大值。如果没有参数则返回-Infinity。如果任意一个参数是NaN或不可转换为数字,则返回NaN

Math.min()

  返回参数中最小值。如果没有参数则返回Infinity。如果任意一个参数是NaN或不可转换为数字,则返回NaN

  1. console.log(Math.min(,,));//
  2. console.log(Math.max(,,));//
  3. console.log(Math.min());//Infinity
  4. console.log(Math.max());//-Infinity
  5. console.log(Math.min(,,'3px'));//NaN
  6. console.log(Math.max(,,'3px'));//NaN

【tips】找到数组中的最大或最小值

  1. var values = [,,,,,,,];
  2. var maxValue = Math.max.apply(Math,values);//
  3. var minValue = Math.min.apply(Math,values);//

  当我们在一个表单中需要一个合法的月份值时,可以使用下列代码

  1. Math.min(Math.max(1,input),12);

舍入

  Math对象一共有三种小数舍入为整数的方法,它们是:Math.ceil()、Math.floor()和Math.round()

Math.ceil()

  执行向上取整运算,也就是说,它返回大于等于函数参数的最接近的整数

  [注意]Math.ceil()不会将负数变成绝对值更大的负数,而是将它们向0的方向取整

Math.floor() 

  执行向下取整运算,也就是说,它返回小于等于函数参数的最接近的整数

  [注意]Math.floor()对负数也向下取整,即数字将更小

Math.round()

  执行四舍五入取整运算

  [注意]Math.round(x) + Math.round(-x) == 0;//true,当x为数字时

  1. console.log(Math.ceil(12.6));//
  2. console.log(Math.floor(12.6));//
  3. console.log(Math.round(12.6));//
  4. console.log(Math.ceil(-12.6));//-12
  5. console.log(Math.floor(-12.6));//-13
  6. console.log(Math.round(-12.6));//-13

随机数

Math.random()

  该方法返回大于等于0小于1的一个随机数

  1. console.log(Math.random());//0.590752829178167

  套用下面的公式可以利用Math.random()从某个整数范围内随机选择一个值

  1. = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
  1. //返回一个1-10之间的整数值
  2. var num = Math.floor(Math.random() * + )

  多数情况下,已知条件是首尾值

  1. var num = Math.floor(Math.random()*(upperValue - lowerValue + ) + lowerValue);
  1. //从数组中随机取出一项
  2. var colors = [,,,,,];
  3. var color = colors[Math.floor(Math.random()*colors.length)];

01值

  如果想取得随机的01值,可使用下面代码

  1. Math.round(Math.random())

 长度一致的随机数

  1. var random = Math.random();
  2. var random = random + '';
  3. var random = random.slice(,);
  4. console.log(random);

绝对值

Math.abs()

  该方法返回任意数值的绝对值

  1. console.log(Math.abs(-));//
  2. console.log(Math.abs('1px'));//NaN
  3. console.log(Math.abs(,,));//

三角函数

  Math对象共有7个涉及到三角函数的函数,分别是正弦、余弦、正切、反正弦、反余弦、反正切及y/x的反正切值

Math.sin(x)

   返回x的正弦值,返回值介于-1到1之间

Math.cos(x)

   返回x的余弦值,返回值介于-1到1之间

Math.tan(x)

   返回x的正切值

  [注意]x是一个以弧度制度量的角度,如果想将角度制转为弧度制,可以将角度制的值乘以0.017(2派/360)

Math.asin(x)

   返回x的反正弦值,返回值介于-派/2到派/2弧度之间(x必须是-1到1之间的数)

Math.acos(x)

   返回x的反余弦值,返回值介于0到派弧度之间(x必须是-1到1之间的数)

Math.atan(x)

   返回x的反正切值,返回值介于-派/2到派/2弧度之间

Math.atan2(y,x)

   返回y/x的反正切值,返回值介于-派到派可以将y看做一个点的y坐标,x看做点的x坐标

  [注意]y坐标在x坐标前面

  1. console.log(Math.sin(*Math.PI/));//0.49999999999999994
  2. console.log(Math.cos(*Math.PI/));//0.5000000000000001
  3. console.log(Math.tan(*Math.PI/));//0.9999999999999999
  4. console.log(Math.asin()*/Math.PI);//
  5. console.log(Math.acos()*/Math.PI);//
  6. console.log(Math.atan()*/Math.PI);//
  7. console.log(Math.atan2(,)*/Math.PI);//

乘方开方

  Math对象涉及到乘方开方的函数共有4个

Math.exp(num)

  返回Math.E的num次幂,即enum

  1. console.log(Math.exp());//
  2. console.log(Math.exp());//2.718281828459045

Math.log(num)

  返回num的自然对数,logenum(num必须是大于等于0的数)

  1. log10x = 1og10e * logex
  2. log2x = log2e * logex
  1. function log10(x){
  2. return Math.LOG10E * Math.log(x);
  3. }
  4. function log2(x){
  5. return Math.LOG2E * Math.log(X);
  6. }
  1. console.log(Math.log());//
  2. console.log(Math.log(Math.E));//

Math.sqrt(num)

  返回num的平方根(x必须是大于等于0的数)

  1. console.log(Math.sqrt());//
  2. console.log(Math.sqrt());//

Math.pow(num,power)

  返回num的power次幂

  1. console.log(Math.pow(,));//
  2. console.log(Math.pow(,/));//

参考资料

【1】 ES5/Math对象 https://www.w3.org/html/ig/zh/wiki/ES5/builtins#Math_.E5.AF.B9.E8.B1.A1
【2】 阮一峰Javascript标准参考教程——标准库——Math对象 http://javascript.ruanyifeng.com/stdlib/math.html
【3】 W3School-Javascript高级教程——Math对象 http://www.w3school.com.cn/jsref/jsref_obj_math.asp
【4】《javascript权威指南(第6版)》第三部分 javascript核心参考
【5】《javascript高级程序设计(第3版)》第5章 引用类型

javascript类型系统——Math对象的更多相关文章

  1. JavaScript数据类型 Math对象详解

    前言 javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现.和其他对象不同,Math只是一个静态对象,并没有Math()构造函 ...

  2. JavaScript的Math对象

    原文 简书原文:https://www.jianshu.com/p/8776ec9cfb58 大纲 前言 1.Math对象的值属性 2.Math对象的函数属性 3.Math对象的函数的使用 前言 Ma ...

  3. javascript之Math对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. JavaScript:Math 对象

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

  5. javascript总结3:javaScript的 Math 对象

    Math 对象 Math 对象用于执行数学任务. Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(). Math 常用的方法 var n1=1234; v ...

  6. JavaScript 之 Math对象

    Math对象 Math 对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供. 常用方法: Math.PI // 圆周率 Math.random() // 生成随机数,生成0~ ...

  7. javascript类型系统——包装对象

    × 目录 [1]定义 [2]生存期 [3]显式创建[4]转型函数[5]比较运算 前面的话 javascript对象是一种复合值,它是属性或已命名值的集合.通过'.'符号来引用属性值.当属性值是一个函数 ...

  8. JavaScript中Math对象的方法介绍

    1.比较最值方法 比较最值有两种方法,max() 和 min() 方法. 1.1 max() 方法,比较一组数值中的最大值,返回最大值. var maxnum = Math.max(12,6,43,5 ...

  9. javascript操作Math对象的方法总结

    //数学函数--abs 返回数字的绝对值 var a; /*a = Math.abs(-12); alert(a); //12 //数学函数--acos 返回数的反余弦数 a = Math.acos( ...

随机推荐

  1. uva-10305

      题意:给出n个任务,任务不是完全独立的,有些任务必须依赖另外一些任务才能执行:m个任务关系. 输出:n个任务的可能执行顺序: 我的解决方法:这就是个赤裸裸的拓扑排序,直接dfs拓扑每一个任务点,然 ...

  2. 项目文件""已被重命名或已不在解决方案中

    如题,这个错误在vs2010里,开始编译的时候出现了,我的解决办法就是把所有的project都移除,然后再添加进来,就不弹这个错误了.

  3. mysql 服务windows安装

    找到mysql的bin目录,下面有一个mysqld.exe程序,这是用来启动mysql服务的,直接运行即可启动. 还有安装windows服务方式: mysqld.exe -install -manua ...

  4. SQL中的共享锁分析及如何解锁

    1.1.1 摘要 在系统设计过程中,系统的稳定性.响应速度和读写速度至关重要,就像12306.cn那样,当然我们可以通过提高系统并发能力来提高系统性能总体性能,但在并发作用下也会出现一些问题,例如死锁 ...

  5. iOS下控件坐标的转换方法

    转换方法如下: - (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view - (CGPoint)convertPoint:(CGPo ...

  6. LINUX下常用SHELL指令

    Linux Shell常用shell命令 一.文件.目录操作命令 1.ls命令 功能:显示文件和目录的信息 ls 以默认方式显示当前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示 ...

  7. Use Hibernate core API

    For Hibernate configuration, We can use hibernate.cfg.xml file to configure: <?xml version='1.0' ...

  8. Qt实现的根据进程名来结束进程

    1.头文件及实现部分: #include <windows.h> #include <tlhelp32.h> #include "psapi.h" #pra ...

  9. spi接口的ds1302时钟芯片控制在lcd1602上显示

    spi接口的ds1302时钟芯片控制在lcd1602上显示                                                                        ...

  10. Quartz.net2.2初体验

    简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作.相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气 ...