前言

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

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

常量

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

【对数】

Math.E             自然对数的底数,即常量e的值(约等于2.71828)
Math.LN2           2的自然对数(约等于0.693)
Math.LN10          10的自然对数(约等于2.303)
Math.LOG2E         以2为底e的对数(约等于1.443)
Math.LOG10E        以10为底e的对数(约等于0.434)
console.log(Math.E);//2.718281828459045
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.PI            派的值(约等于3.14)
console.log(Math.PI);//3.141592653589793

【平方根】

Math.SQRT2         2的平方根(约等于1.414)
Math.SQRT1_2       1/2的平方根,即2的平方根的倒数(约等于0.707)
console.log(Math.SQRT2);//1.4142135623730951
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

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

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

var values = [1,2,3,4,5,6,7,8];
var maxValue = Math.max.apply(Math,values);//8
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为数字时

console.log(Math.ceil(12.6));//13
console.log(Math.floor(12.6));//12
console.log(Math.round(12.6));//13
console.log(Math.ceil(-12.6));//-12
console.log(Math.floor(-12.6));//-13
console.log(Math.round(-12.6));//-13

随机数

【Math.random()】
该方法返回大于等于0小于1的一个随机数

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

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

值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

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

//从数组中随机取出一项
var colors = [1,2,3,4,5,6];
var color = colors[Math.floor(Math.random()*colors.length)];

绝对值

【Math.abs()】
该方法返回任意数值的绝对值

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

三角函数

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坐标前面

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

乘方开方

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

【Math.exp(num)】
返回Math.E的num次幂

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

【Math.log(num)】
返回num的自然对数,logenum(num必须是大于等于0的数)

log10x = 1og10e * logex
log2x = log2e * logex

function log10(x){
    return Math.LOG10E * Math.log(x);
}
function log2(x){
    return Math.LOG2E * Math.log(X);
}

console.log(Math.log(1));//0
console.log(Math.log(Math.E));//1

【Math.sqrt(num)】
返回num的平方根(x必须是大于等于0的数)

console.log(Math.sqrt(100));//10
console.log(Math.sqrt(1));//1

【Math.pow(num,power)】
返回num的power次幂

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

JavaScript数据类型 Math对象详解的更多相关文章

  1. (转)javascript中event对象详解

    原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解          博客分类: javaScript JavaScriptCS ...

  2. 原生JS:Math对象详解

    Math对象 本文参考MDN做的详细整理,方便大家参考MDN Math 也是一个内置对象, 为数学常量和数学函数提供了属性和方法,而不是一个函数对象. 与其它全局对象不同的是, Math 不是一个构造 ...

  3. JavaScript中数组对象详解

    Array对象即数组对象用于在单个变量中存储多个值,JS的数组是弱类型的,所以允许数组中含有不同类型的元素,数组元素甚至可以是对象或者其他数组. 创建数组的语法 1.Array构造器 1.var li ...

  4. Javascript学习之Math对象详解

    1.定义 Math 是一个内置对象, 为数学常量和数学函数提供了属性和方法.  Math 不是一个函数对象 Math 不是一个构造器.  Math 的所有属性和方法都是静态的 2.属性 Math.E ...

  5. 【好文收藏】javascript中event对象详解

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...

  6. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  7. JavaScript进阶知识点——函数和对象详解

    JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...

  8. Javascript中prototype属性详解 (存)

    Javascript中prototype属性详解   在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不 ...

  9. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

随机推荐

  1. Java关于字符串工具类~持续汇总~

    /** * 01 * 描述:String的substring和replace方法使用 * [时间 2019年3月5日下午3:22:08 作者 陶攀峰] */ public static void te ...

  2. Python迭代器详解

    最近在看两个github项目的代码时对迭代器有些困惑,因此写一篇笔记以理清脉络,经过两天的修改完善对迭代器有了一个初步的理解,相信会比网上绝大多数笔记有用些. 一.基础概念 在进行具体的迭代类和迭代函 ...

  3. 定义工作,解读自我——IT帮2019年2月线下活动回顾

    本次活动是在北京和深圳两个分站同步进行的,IT团建委员会负责策划和组织,北京站由帮主周老师.王兵老师主导,深圳站由副帮主兼深圳站长陈焕老师主导. 几位老师都是有着丰富的工作经历和人生体验的导师,他们不 ...

  4. MySQL存储引擎InnoDB与MyISAM的区别

    一.比较 事务:InnoDB是事务型的,可以使用Commit和Rollback语句. 并发:MyISAM只支持表级锁,InnoDB还支持行级锁. 外键:InnoDB支持外键. 备份:InnoDB支持在 ...

  5. egg.js与mysql的结合使用,以及部署事项

    最近使用egg.js写了一个小项目练手,主要用来封装接口以及代理接口.进入正题: egg搭建以及各项配置 可以详见官方文档:https://eggjs.org,这里简单描述一下: 1.直接使用脚手架快 ...

  6. Linux Docker的部署

    1.安装 $ yum -y install docker 2.启动docker服务 $ systemctl start docker 3.设置开启自启 $ systemctl enable docke ...

  7. echarts 配置

    堆叠柱状图, 只要保证 stack 属性相同,就强制画成一列 这就是切割线

  8. jeecg入门操作—表单界面

    一.搭建jeecg开发环境 参考环境搭建步骤 https://www.cnblogs.com/dyh004/p/10687633.html 二.创建用户数据库表: 登录上jeecg平台,点击在线开发- ...

  9. 关于map的初级应用

    map实际采用了红黑树的实现,在此,我们先不讨论map的底层实现结构原理,先来看看map究竟是怎么用,以及我是怎么看待map的. 先上代码: #include <map> #include ...

  10. 如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载

    可视化项目中经常用到ecahrt,各种异步加载,连接socket,多语言切换等问题,现在汇总一下: Ecahrt初始化,全局统一init,可以初始化为0,等待后续数据操作 1.如果是api重新请求,数 ...