javascript类型系统——Math对象
前面的话
javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现。和其他对象不同,Math只是一个静态对象,并没有Math()构造函数。实际上,Math只是一个由javascript设置的对象命名空间,用于存储数学常量和函数。本文将详细介绍Math对象
new Math();//Uncaught TypeError: Math is not a constructor
常量
Math对象一共有8个常量,主要包括对数、派值和平方根三类
对数
Math.E 自然对数的底数,即常量e的值(约等于2.)
Math.LN2 2的自然对数(约等于0.)
Math.LN10 10的自然对数(约等于2.)
Math.LOG2E 以2为底e的对数(约等于1.)
Math.LOG10E 以10为底e的对数(约等于0.)
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.)
console.log(Math.PI);//3.141592653589793
平方根
Math.SQRT2 2的平方根(约等于1.)
Math.SQRT1_2 /2的平方根,即2的平方根的倒数(约等于0.)
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(,,));//
console.log(Math.max(,,));//
console.log(Math.min());//Infinity
console.log(Math.max());//-Infinity
console.log(Math.min(,,'3px'));//NaN
console.log(Math.max(,,'3px'));//NaN
【tips】找到数组中的最大或最小值
var values = [,,,,,,,];
var maxValue = Math.max.apply(Math,values);//
var minValue = Math.min.apply(Math,values);//
当我们在一个表单中需要一个合法的月份值时,可以使用下列代码
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));//
console.log(Math.floor(12.6));//
console.log(Math.round(12.6));//
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() * + )
多数情况下,已知条件是首尾值
var num = Math.floor(Math.random()*(upperValue - lowerValue + ) + lowerValue);
//从数组中随机取出一项
var colors = [,,,,,];
var color = colors[Math.floor(Math.random()*colors.length)];
01值
如果想取得随机的01值,可使用下面代码
Math.round(Math.random())
长度一致的随机数
var random = Math.random();
var random = random + '';
var random = random.slice(,);
console.log(random);
绝对值
Math.abs()
该方法返回任意数值的绝对值
console.log(Math.abs(-));//
console.log(Math.abs('1px'));//NaN
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坐标前面
console.log(Math.sin(*Math.PI/));//0.49999999999999994
console.log(Math.cos(*Math.PI/));//0.5000000000000001
console.log(Math.tan(*Math.PI/));//0.9999999999999999
console.log(Math.asin()*/Math.PI);//
console.log(Math.acos()*/Math.PI);//
console.log(Math.atan()*/Math.PI);//
console.log(Math.atan2(,)*/Math.PI);//
乘方开方
Math对象涉及到乘方开方的函数共有4个
Math.exp(num)
返回Math.E的num次幂,即enum
console.log(Math.exp());//
console.log(Math.exp());//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());//
console.log(Math.log(Math.E));//
Math.sqrt(num)
返回num的平方根(x必须是大于等于0的数)
console.log(Math.sqrt());//
console.log(Math.sqrt());//
Math.pow(num,power)
返回num的power次幂
console.log(Math.pow(,));//
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对象的更多相关文章
- JavaScript数据类型 Math对象详解
前言 javascript使用算术运算符实现基本的算术运算,如果要实现更加复杂的算术运算,需要通过Math对象定义的常量和函数来实现.和其他对象不同,Math只是一个静态对象,并没有Math()构造函 ...
- JavaScript的Math对象
原文 简书原文:https://www.jianshu.com/p/8776ec9cfb58 大纲 前言 1.Math对象的值属性 2.Math对象的函数属性 3.Math对象的函数的使用 前言 Ma ...
- javascript之Math对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript:Math 对象
ylbtech-JavaScript:Math 对象 Math 对象用于执行数学任务. 使用 Math 的属性和方法的语法: var pi_value=Math.PI; var sqrt_value= ...
- javascript总结3:javaScript的 Math 对象
Math 对象 Math 对象用于执行数学任务. Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(). Math 常用的方法 var n1=1234; v ...
- JavaScript 之 Math对象
Math对象 Math 对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供. 常用方法: Math.PI // 圆周率 Math.random() // 生成随机数,生成0~ ...
- javascript类型系统——包装对象
× 目录 [1]定义 [2]生存期 [3]显式创建[4]转型函数[5]比较运算 前面的话 javascript对象是一种复合值,它是属性或已命名值的集合.通过'.'符号来引用属性值.当属性值是一个函数 ...
- JavaScript中Math对象的方法介绍
1.比较最值方法 比较最值有两种方法,max() 和 min() 方法. 1.1 max() 方法,比较一组数值中的最大值,返回最大值. var maxnum = Math.max(12,6,43,5 ...
- javascript操作Math对象的方法总结
//数学函数--abs 返回数字的绝对值 var a; /*a = Math.abs(-12); alert(a); //12 //数学函数--acos 返回数的反余弦数 a = Math.acos( ...
随机推荐
- form表单回车提交
当form中只有一个input[type="text"](其他的表单元素可以随意有)的输入框时候,当input[type="text"]获得焦点的时候,无论表单 ...
- mysql 索引问题
转自http://www.blogjava.net/happyenjoylife/archive/2011/12/17/366639.html mysql innodb存储与索引的总结 Innodb存 ...
- 解决eclipse-helios中Errors running builder JavaScript Validator的问题(转)
原文地址:http://hi.baidu.com/%B3%BF%D1%F4%C2%FE%B2%BD/blog/item/2528f6de3ca90955ccbf1a3f.html 最近下载了eclip ...
- 《利用Python进行数据分析》第4章学习笔记
NumPy基础:数组和矢量计算 NumPy的ndarray:一种多维数组对象 该对象是一个快速灵活的大数据集容器.你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样 列表转换 ...
- PN结的形成
P型半导体 在纯净的硅晶体中掺入3价元素如硼,使之取代晶格中硅原子的位置,就形成了P型半导体.在P型半导体中,空穴为多字,自由电子为少子,主要靠空穴导电.掺入的杂质越多,空穴的浓度就越大,导电性就越强 ...
- 安装RPM包或者安装源码包
本系列的博客来自于:http://www.92csz.com/study/linux/ 在此,感谢原作者提供的入门知识 这个系列的博客的目的在于将比较常用的liunx命令从作者的文章中摘录下来,供自己 ...
- libmegjb.so加载问题调试和分析
欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=70 01-01 00:09:21.084: D/dalvikvm(10394): Try ...
- 快速学习C语言三: 开发环境, VIM配置, TCP基础,Linux开发基础,Socket开发基础
上次学了一些C开发相关的工具,这次再配置一下VIM,让开发过程更爽一些. 另外再学一些linux下网络开发的基础,好多人学C也是为了做网络开发. 开发环境 首先得有个Linux环境,有时候家里机器是W ...
- 使用C#开发ActiveX控件(新)
前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...
- Javascript自己动手实现getter/setter
虽然ES5中为我们提供了Object.defineProperty方法来设置getter与setter,但此原生方法使用起来并不方便,我们何不自己来实现一个类,只要继承该类并遵循一定的规范就可以拥有媲 ...