ECMAScript 5 —— 单体内置对象之Math对象
ECMAScript 还为保存数学公式和信息提供了一个公共位置,即 Math 对象。与我们在 JavaScript 直接编写的计算功能相比,Math 对象提供的计算功能执行起来要快得多。Math 对象中还提供了辅助完成这些计算的属性和方法。
一. Math 对象的属性
Math 对象包含的属性大都是数学计算中可能会用到的一些特殊值。下表列出了这些属性。
二. min()和 max()方法
Math 对象还包含许多方法,用于辅助完成简单和复杂的数学计算。
其中,min()和 max()方法用于确定一组数值中的最小值和最大值。这两个方法都可以接收任意多个数值参数,如下面的例子所示。
var max = Math.max(3, 54, 32, 16); alert(max); //54 var min = Math.min(3, 54, 32, 16); alert(min); //3
对于 3、54、32 和 16,Math.max()返回 54,而 Math.min()返回 3。这两个方法经常用于避免多余的循环和在 if 语句中确定一组数的最大值。
要找到数组中的最大或最小值,可以像下面这样使用 apply()方法。
var values = [1, 2, 3, 4, 5, 6, 7, 8]; var max = Math.max.apply(Math, values);
这个技巧的关键是把 Math 对象作为 apply()的第一个参数,从而正确地设置 this 值。然后,可以将任何数组作为第二个参数。
三. 舍入方法
下面来介绍将小数值舍入为整数的几个方法:Math.ceil()、Math.floor()和 Math.round()。这三个方法分别遵循下列舍入规则:
- Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
- Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
- Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数。
下面是使用这些方法的示例:
alert(Math.ceil(25.9)); //26 alert(Math.ceil(25.5)); //26 alert(Math.ceil(25.1)); //26 alert(Math.round(25.9)); //26 alert(Math.round(25.5)); //26 alert(Math.round(25.1)); //25 alert(Math.floor(25.9)); //25 alert(Math.floor(25.5)); //25 alert(Math.floor(25.1)); //25
对于所有介于 25 和 26(不包括 26)之间的数值,Math.ceil()始终返回 26,因为它执行的是向上舍入。Math.round()方法只在数值大于等于 25.5 时返回 26;否则返回 25。最后,Math.floor()对所有介于 25 和 26(不包括 26)之间的数值都返回 25。
四. random()方法
Math.random()方法返回大于等于 0 小于 1 的一个随机数。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件。套用下面的公式,就可以利用 Math.random()从某个整数范围内随机选择一个值。
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)
公式中用到了 Math.floor()方法,这是因为 Math.random()总返回一个小数值。而用这个小数值乘以一个整数,然后再加上一个整数,最终结果仍然还是一个小数。举例来说,如果你想选择一个 1到 10 之间的数值,可以像下面这样编写代码:
var num = Math.floor(Math.random() * 10 + 1);
总共有 10 个可能的值(1 到 10),而第一个可能的值是 1。而如果想要选择一个介于 2 到 10 之间的值,就应该将上面的代码改成这样:
var num = Math.floor(Math.random() * 9 + 2);
从 2 数到 10 要数 9 个数,因此可能值的总数就是 9,而第一个可能的值就是 2。多数情况下,其实都可以通过一个函数来计算可能值的总数和第一个可能的值,例如:
function selectFrom(lowerValue, upperValue) {var choices = upperValue - lowerValue + 1;return Math.floor(Math.random() * choices + lowerValue); } var num = selectFrom(2, 10); alert(num); // 介于 2 和 10 之间(包括 2 和 10)的一个数值
函数 selectFrom()接受两个参数:应该返回的最小值和最大值。而用最大值减最小值再加 1 得到了可能值的总数,然后它又把这些数值套用到了前面的公式中。这样,通过调用 selectFrom(2,10)就可以得到一个介于 2 和 10 之间(包括 2 和 10)的数值了。利用这个函数,可以方便地从数组中随机取出一项,例如:
var colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"]; var color = colors[selectFrom(0, colors.length-1)]; alert(color); // 可能是数组中包含的任何一个字符串
在这个例子中,传递给 selectFrom()的第二个参数是数组的长度减 1,也就是数组中最后一项的位置。
五. 其他方法
Math 对象中还包含其他一些与完成各种简单或复杂计算有关的方法,如下表。
转载于:https://www.cnblogs.com/johnvwan/p/9554038.html
ECMAScript 5 —— 单体内置对象之Math对象相关推荐
- 单体内置对象_js基础-单体内置对象(Global、Math)
单体内置对朋不功事做时次功好来多这开制的请一例农在象(Global.Math是能览调不页新代些事几求事都时学下是事) 内置对象二,都过发宗发数前业很断屏击和公图使分近也就是我们不必显示地区实例化,直接 ...
- 两个单体内置对象_Global和Math
内置对象:不依赖于宿主对象,在程序执行之前就已经存在.例如Object,Array和String. 今天主要学习另外两个单体内置对象,Global和Math. (一)Global 对象 URI编码方法 ...
- 高程5.7单体内置对象 5.8小结
内置对象的定义:由ECMAScript实现提供的, 不依赖于鹤环境的对象,这些对象在ECMAScript程序执行之前就已经存在了. 开发人员不必显式地实例化内置对象,因为它们已经实例化了. 前面介绍了 ...
- 单体内置对象_单体内置对象
内置对象:由ECMAscript实现提供的,不依赖宿主环境的对象,这些对象再ES程序执行之前就已经存在 Global对象 Global全局对象是一个特别的对象(兜底对象) 不属于其他对象的属性和方法, ...
- 内置对象 API Math对象、Data对象、Array对象、String对象
Javascript分三种对象:自定义对象.内置对象.浏览器对象 前两种对象是JS基础内容,属于ECMAScript:第三个浏览器对象属于我们JS独有的. 内置对象: 就是指JS语言自带的一些对象,这 ...
- 前端:JS/23/JS内置对象(String对象,Array对象,Date对象,Boolean对象,Number对象,Math对象),实例:求圆的面积,求直角三角形
JS内置对象 1,String对象 字符串对象,提供了对字符串进行操作的属性和方法 2,Array对象 数组对象,提供了数组操作方面的属性和方法 3,Date对象 日期时间对象,可以获取系统的日期时间 ...
- JavaScript内置对象→对象、系统函数、Date日期对象、String字符串对象、Math对象、Number数字对象、Object对象、Boolean对象、Error对象
对象 系统函数 Date日期对象 String字符串对象 Math对象 Number数字对象 Object对象 Boolean对象 Error对象
- 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)
27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...
- 【python】python内置函数——dir()获取对象的属性和方法
dir()函数 不带参数时,返回当前范围内的变量.方法和定义的类型列表: 带参数时,返回参数的属性.方法列表: 如果参数包含方法__dir__(),该方法将会被调用: 如果参数不包含__dir__() ...
最新文章
- 2018-4-17论文《狼群算法的研究与应用》笔记2 :高维复杂单目标连续优化问题的改进狼群算法
- R语言ggplot2包以及lattice包可视化方程、函数的曲线实战:function curve
- 图形处理(七)基于热传播的测地距离计算-Siggraph 2013
- 了解Linux操作系统发展阶段
- CVPR2021 最佳论文候选—提高图像风格迁移的鲁棒性
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果...
- 机器学习-马尔可夫随机场(MRF)
- 自定义一个Chrome翻译插件
- 【R】R语言windows下连接MySQL
- 利用水文分析提取山脊线山谷线
- 交换机获取MAC地址
- ABAP 计量单位转换
- 好用的小工具(二):网站权重查询小工具
- POSIX 线程具体解释(3-相互排斥量:固定加锁层次/“试加锁-回退”)
- python面向对象实例王者荣耀_PYTHON-面向对象-练习-王者荣耀 对砍游戏
- 使c语言程序变成流程图的软件,c语言流程图生成器
- 计算机老师教育叙事,教育叙事范文10篇
- Oracle用户的状态有几种?分别表示什么含义?
- Hadoop渐进九:HBase配置及简单应用
- 【Ubuntu】使用Applmage文件实现QQ的使用
热门文章
- Linux环境thinkphp配置以及数据源驱动修改
- C# 2进制、8进制、10进制、16进制...各种进制间的轻松转换
- 模仿nginx修改进程名
- python3编写简易统计服务器
- linux数据库什么意思,Linux系统中的数据库命令是什么
- ajax跨界表单,ajax使用jsonp解决跨域问题
- java.io包对象读写_java.io 包中的____________和____________类主要用于对对象(Object)的读写_学小易找答案...
- Nginx学习3:反向代理实例
- Redis初学:2(Redis的启动)
- php配置控制器和视图位置,视图控制器