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 相关文章推荐
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
jQuery Validation插件remote验证方式的Bug解决
Jul 01 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
javascript中字体浮动效果的简单实例演示
Nov 18 Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
Vue.js如何使用Socket.IO的示例代码
Sep 05 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
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
一篇入门的php Class 文章
2007/04/04 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
python hough变换检测直线的实现方法
2019/07/12 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
致共产党员倡议书
2014/04/16 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
售房协议书
2014/08/19 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
横店影视城导游词
2015/02/06 职场文书
同事打架检讨书
2015/05/06 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技