Javascript Math对象


Posted in Javascript onAugust 13, 2009

Math对象

Math对象是在高中数学课就学过的内置对象。它知道解决最复杂的数学问题的所有公式,如果给它要处理的数字,即能计算出结果。

Math对象有几个属性,主要是数学界的专用值。下表类出了这些属性:

属  性 说    明
E 值e,自然对数的底
LN10 10的自然对数
LN2 2的自然对数
LOG2E 以2为底E的对数
LOG10E 以10为底E的对数
PI 值π
SQRT1_2 1/2的平方根
SQRT2 2的平方根

虽然这些值的意义与用法不在本书讨论范围内,但如果清楚它们是什么,在需要时,即可使用它们。

Math对象还包括许多专门用于执行简单的及复杂的数学计算的方法。

方法min()和max()用于判断一组数中的最大值和最小值。这两个方法都可接受任意多个参数:

Javascript Math对象Javascript Math对象

Javascript Math对象

对于数字3、54、32和16,max()返回54,min()返回3。用这些方法,可免去用循环或if语句来判断一组数中的最大值。

另一个方法abs()返回数字的绝对值。绝对值是负数的正值版本(正数的绝对值就是它自身)。

Javascript Math对象

这个例子中,abs(-1)返回1,abs(1)也返回1。

下一组方法用于把小数舍入成整数。处理舍入操作的方法有三个,即ceil()、floor()和round(),它们的处理方法不同:

q 方法ceil()表示向上舍入函数,总是把数字向上舍入到最接近的值。

q 方法floor()表示向下舍入函数,总是把数字向下舍入到最接近的值。

q 方法round()表示标准的舍入函数,如果数字与下一个整数的差不超过0.5,则向上舍入,否则向下舍入。这是在初中学过的舍入规则。

为说明每种方法的处理方式,考虑使用值25.5:

Javascript Math对象

对于ceil()和round(),传递25.5,返回的是26,而floor()返回的是25。注意不要交替使用这些方法,因为最后可能得到与预期不符的结果。

另一组方法与指数的用法有关。这些方法包括exp(),用于把Math.E升到指定的幂;log()用于返回特定数字的自然对数;pow()用于把指定的数字升到指定的幂;sqrt()用于返回指定数字的平方根。

方法exp()和log()本质上功能相反,exp()把Math.E升到特定的幂,log()则判断Math.E的多少次指数才等于指定的值。例如:

Javascript Math对象Javascript Math对象

这里,首先用exp()把Math.E升到10次幂,然后log()返回10,即等于数字iNum必需的指数。很多人都对此感到迷茫。全世界的高中生和数学系的大学生都被此类问题难倒过。如果你对自然对数一无所知,那么有可能永远都不需要为它编写代码。

方法pow()用于把数字升到指定的幂,如把2升到10次幂(在数学中表示为210):

Javascript Math对象

pow()的第一个参数是基数,此例子中是2。第二个参数是要升到的幂,此例子中是10。

不建议把Math.E作为pow()方法的基数。最好使用exp()Math.E进行升幂运算,因为它是专用运算,计算出的值更精确。

这组方法中的最后一个方法是sqrt(),用于返回指定数字的平方根。它只有一个参数,即要求平方根的数字。要求4的平方根,只需要用一行代码:

Javascript Math对象

当然,4的平方根是2,就是这行代码的输出。

你也许会问“为什么平方根必须利用指数”?实际上,数字平方根就是它的1/2次幂。例如,21/2就是2的平方根。

Math对象还有一整套三角函数方法。下表列出了这些方法:

方    法 说    明
acos(x) 返回x的反余弦值
asin(x) 返回x的反正弦值
atan(x) 返回x的反正切值
atan2(y,x) 返回y/x的反余弦值
cos(x) 返回x的余弦值
sin(x) 返回x的正弦值
tan(x) 返回x的正切值

即使这些方法是ECMA-262定义的,结果也是由实现决定的,因为每个值的计算方法都有很多,从而使得不同的实现生成的结果的精度也不同。

Math对象的最后一个方法是random(),该方法返回一个0到1之间的随机数,不包括0和1。这是在主页上显示随机引述或新闻的站点常用的工具。可用下面的形式调用random()方法,在某个范围内选择随机数:

Javascript Math对象

这里使用方法floor(),因为random()返回的都是小数值,也就是说,用它乘以一个数,然后再加上一个数,得到的仍然是小数值。通常你想选择一个随机整数值。因此,必须使用floor()方法。如果想选择一个1到10之间的数,代码如下:

Javascript Math对象

可能出现的值有10个(1到10),这些值中的第一个是1。如果想选择2到10之间的值,代码如下:

Javascript Math对象

从2到10,只有9个数字,所以选项总数为9,其中第一个值是2。许多时候,使用计算选项总数的函数和第一个可用的值更容易些:

Javascript Math对象

使用函数,可很容易地选择Array中的随机项:

Javascript Math对象

这里,selectFrom()函数的第二个参数是数组的长度减1,即数组中最后一个元素的位置。

Javascript 相关文章推荐
取得窗口大小 兼容所有浏览器的js代码
Aug 09 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
批量实现面向对象的实例代码
Jul 01 Javascript
jQuery查询数据返回object和字符串影响原因是什么
Aug 09 Javascript
javascript调试过程中找不到哪里出错的可能原因
Dec 16 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
Dec 08 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
js实现产品缩略图效果
Mar 10 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
Oct 01 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 Javascript
Javascript 作用域使用说明
Aug 13 #Javascript
Javascript 继承机制实例
Aug 12 #Javascript
Javascript 继承机制的实现
Aug 12 #Javascript
Javascript 继承实现例子
Aug 12 #Javascript
JQuery jsonp 使用示例代码
Aug 12 #Javascript
JavaScript 权威指南(第四版) 读书笔记
Aug 11 #Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
Aug 09 #Javascript
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP中$_SERVER的详细参数与说明
2008/07/29 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
js倒计时小程序
2013/11/05 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
Python使用MONGODB入门实例
2015/05/11 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
Python聊天室程序(基础版)
2018/04/01 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python制作填词游戏步骤详解
2019/05/05 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
python多维数组分位数的求取方式
2020/03/03 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
serialVersionUID具有什么样的特征
2014/02/20 面试题
食品行业求职人的自我评价
2014/01/19 职场文书
分层教学实施方案
2014/03/19 职场文书
高中家长寄语
2014/04/02 职场文书
比赛口号大全
2014/06/10 职场文书
利用python做数据拟合详情
2021/11/17 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏