当前位置: 首页 > 编程日记 > 正文

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

相关文章:

织梦内容管理系统修改

1.如何去掉互动中心 修改根目录下templates——default——index.htm文件&#xff0c;删除以下内容 <div id"rightAD1" style:margin:10px auto"></div> <div class"usercenter">.....到</div> <!-- /usercenter --&…

斯坦福大学 AI100 报告发布:AI 发展速度惊人,但风险也正走进现实

‍‍作者 | 阳光来源 | 学术头条语言处理、计算机视觉和模式识别的巨大进步&#xff0c;意味着人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;每天都在与人们的生活进行交互&#xff0c;从帮助人们选择电影&#xff0c;到帮助人们解决医疗诊断难题方面…

linux===Ubuntu 上安装 Node.js

https://www.cnblogs.com/andfly/p/6681487.html转载于:https://www.cnblogs.com/botoo/p/8118903.html

非计算机专业的学生,从事编程工作的上升壁垒是什么?

很多同学自己的专业并不是计算机&#xff0c;但是看到如今IT行业发展的这么好&#xff0c;也想转行学习编码。但是自己非科班出身&#xff0c;又到了快毕业的年纪&#xff0c;开始学习编程来得及吗&#xff1f;这些年来&#xff0c;很多培训机构都借鉴了少儿编程培训的经验&…

HTTP头信息中的参数Etag

服务器如果是集群&#xff0c;不同服务器返回的 Http Header 中的 Etag 参数不一样。如果是图片是程序生成的&#xff0c;我们可以用 no-cache 这些 header 来控制&#xff0c;但如果这些图片是 apache 或 nginx 等呢&#xff1f;下面开始介绍 Etag&#xff1a;Etag在HTTP1.1中…

利用JS使用POST方式提交请求的方法

2019独角兽企业重金招聘Python工程师标准>>> function post(url, params) {var temp document.createElement("form");temp.action url;temp.method "post";temp.style.display "none";for (var x in params) {var opt document…

input框取消光标颜色手机端不生效

<style> input{ color:transparent; } </style> <input value"我要隐藏光标">//文字颜色可以使用text-shadow属性<style> input{ color:transparent; text-shadow:0 0 0 red; } </style> PC端没问题&#xff0c;但是手机端测试无效。…

http响应Last-Modified和ETag以及Apache和Nginx中的配置

基础知识   1) 什么是”Last-Modified”?   在浏览器第一次请求某一个URL时&#xff0c;服务器端的返回状态会是200&#xff0c;内容是你请求的资源&#xff0c;同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间&#xff0c;格式类似这样&#xff1a; …

全面分析再动手的习惯:链表的反转问题(递归和非递归方式)

定义一个方法&#xff08;函数&#xff09;&#xff0c;实现输入一个链表的头结点&#xff0c;然后可以反转这个链表的方向&#xff0c;并输出反转之后的链表的头结点。 typedef struct Node{int data;Node *next; } Node, *List; 链表类的问题&#xff0c;涉及到了很多指针的操…

Facebook 正在研究新型 AI 系统,以自我视角与世界进行交互

编译 | 禾木木出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;你是否能想象 AI 以第一人称视角来理解世界是什么样的呢&#xff1f;未来&#xff0c;以第一人称视角理解世界的 AI 可以开启沉浸式体验的新时代。增强现实&#xff08;AR&#xff09;眼镜和虚拟现实&…

docker-2-简单使用docker-ce

安装请看docker-ce安装文档 docker命令合集 参考docker --help 选项 -D 使用debug模式-l 日志级别(有debug|info|warn|error|fatal)&#xff0c;默认info-v 显示版本管理命令config 管理docker配置container 管理容器image 管理镜像network 管理网络service swarm 常用命令atta…

Apache启用mod_expires模块

mod_expires可以减少10%左右的重复请求&#xff0c;让重复的用户对指定的页面请求结果都CACHE在本地&#xff0c;根本不向服务器发出请求。 在使用之前,首先要确认一下”mod_expires”模组是否有启用.如果是自己安装Apache来架设网页主机的话,这里我们可以透过编辑Apache的”ht…

用 Pyecharts 制作炫酷的可视化大屏

作者 | 俊欣来源 | 关于数据分析与可视化前两篇Pyecharts的文章来帮我们简单的梳理了一下可以用Pyecharts来绘制哪些图表之后&#xff0c;本篇文章我们用pyecharts里面的一些组件&#xff0c;将绘制的图表都组合起来首先Grid组件首先介绍Pyecharts模块当中的Grid组件&#xff0…

compass安装使用960 Grid System

960 Grid System 是一个CSS的页面布局框架 demo: http://960.gs/demo.html 前提&#xff1a;安装Ruby 、NodeJS 步骤1&#xff1a;在命令行下安装css插件&#xff1a; gem install compass-960-plugin 步骤2&#xff1a;创建my_project项目&#xff1a; compass create -r nin…

C语言竟成TIOBE年度编程语言候选!苹果iPhone 7卖得最好!

每年这个时候&#xff0c;都是TIOBE榜单评选年度编程语言的时候。今年&#xff0c;Kotlin成为竞争的热门&#xff0c;让人意外的是&#xff0c;C语言居然也成为了候选编程语言之一。自从被Java摘走王者桂冠&#xff0c;C语言几乎是处于持续下滑状态&#xff0c;没想到2017年竟然…

奇怪吸引子---QiChen

奇怪吸引子是混沌学的重要组成理论&#xff0c;用于演化过程的终极状态&#xff0c;具有如下特征&#xff1a;终极性、稳定性、吸引性。吸引子是一个数学概念&#xff0c;描写运动的收敛类型。它是指这样的一个集合&#xff0c;当时间趋于无穷大时&#xff0c;在任何一个有界集…

简介+原理+绘制,详解 Python「瀑布图」的整个制作流程!

作者|黄伟呢来源|数据分析与统计学之美简介瀑布图&#xff0c;由麦肯锡顾问公司所独创的图表类型&#xff0c;因为形似瀑布流水&#xff0c;所以被大家称之为瀑布图(Waterfall Plot)&#xff0c;在企业经营分析、财务分析中使用较多&#xff0c;用以表示企业成本的构成、变化等…

Ubuntu 忘记root登录密码的解决办法

2019独角兽企业重金招聘Python工程师标准>>> 之前做了个虚拟机&#xff0c;最近需要用到&#xff0c;密码忘记了&#xff0c;下面是在忘记密码的情况下登录系统休修改密码&#xff0c;需要进入GRUB修改kernel镜像启动参数 1、重启电脑长按shift键直到进入下图进入GR…

10月21日!API 大赛决赛暨移动云开发者论坛邀您见证数字创新的力量

2021年7月&#xff0c;移动云API应用创新开发大赛正式启动&#xff0c;历时近两个月的时间&#xff0c;共计报名889人&#xff0c;最终提交作品166项。经过前期初审、初赛、复赛等环节&#xff0c;最终企业、移动和高校赛道共29个目团队成功问鼎移动云API应用创新开发大赛决赛榜…

负载均衡环境中和如何设置Expires和Etag

在负载均衡环境中&#xff08;LVS, LoadBalance&#xff09;为了减少浏览器数据的重复请求操作&#xff0c;一般需要设置 Http Header 的 Etage 和 Expires 告诉浏览器请求数据是否已过期。以下内容主要考虑Apachesquid 环境 ETag Header是文件修改时间、文件大小和inode号生成…

C++之typedef 小记

2019独角兽企业重金招聘Python工程师标准>>> &#xfeff;&#xfeff; 以前曾不知道为何要用typedef&#xff0c;随着开发的深入&#xff0c;真正感受到了其内涵所在&#xff1a; 1.如&#xff1a;typedef int DataType 接下来项目中的几万行代码中&#xff0c;如果…

Android Go初探

Android Ore(Go edition) 简介&#xff1a; Android Go并不是一个独立的操作系统&#xff0c;它只是Android O的一种轻量级配置方案&#xff0c;专为1GB以下内存的机型设计&#xff0c; 在这种设置下&#xff0c;一些消耗大量资源的功能将被关闭&#xff0c;同时预装的应用也是…

Apache HTTP Server Version 2.2 文档中文版

模块索引 | 指令索引 | 常见问题 | 词汇表 | 站点导航 Apache HTTP Server 版本2.2 Apache > HTTP Server > 文档 > 版本2.2致谢 | 本篇译者&#xff1a;金步国(其他作品) | 本页最后更新&#xff1a;2006年10月20日[查看最新版本] 电信镜像 网通镜像Apache HTTP Ser…

归一化变换 Normalizing transformations

归一化变换包含两个部分&#xff0c;图像坐标的平移和尺度的缩放。进行归一化的变换不但能够提高处理结果的精确度&#xff0c;而且通过选择一个标准的坐标系预先的消除了图像尺度和坐标原点的选择对算法最终结果的影响。 归一化变换的步骤&#xff1a; 对点进行平移&#xff0…

Arm 通过虚拟硬件与新的解决方案导向的产品 带动物联网经济转型

Arm物联网全面解决方案通过一套全栈式解决方案&#xff0c;大幅加速产品开发进程并提高投资回报率&#xff1b;Arm虚拟硬件使得开发无需基于实体芯片进行&#xff0c;促成软件与硬件的共同设计&#xff0c;让产品开发时间最多缩短两年&#xff1b;Project Centauri作为Arm新的生…

数据库设计 之设计 表字段类型

2019独角兽企业重金招聘Python工程师标准>>> 数据库设计 之设计 表字段类型 博客分类&#xff1a; sql 之前没有 数据库设计的一些经验。 这次数据库设计。由于需求原因和没经验原因。 一些数字类型的字段设计成了varchar2 一些日期类型的字段也设计成了varchar2 一…

Apache关掉Etag和Last-Modified的方法

Apache关掉Etag和Last-Modified的方法,可能也只有我这种无聊的人才会做这种事情.哈哈&#xff0c;关掉etag和last-modified会出现什么样的情况。做一个这样的测试. 不要问我这二个参数是做什么的。。。。。在我的blog中有写. Etag关掉的方法如下,加一个none FileETag none …

P2P最易遭受的DDoS***以及防御手段

从07年的爱沙尼亚DDoS信息战&#xff0c;到2009年广西南宁30个网吧遭受到DDoS勒索&#xff0c;再到新浪网遭受DDoS***无法提供对外服务500多分钟。DDoS愈演愈烈&#xff0c;***事件明显增多&#xff0c;***流量也明显增大&#xff0c;形势十分严峻&#xff0c;超过1G的***流量频…

从飞天到倚天 阿里云底层自研技术大爆发

10月20日&#xff0c;2021云栖大会上&#xff0c;阿里云发布了倚天、磐久、神龙4.0、龙蜥、灵杰等多款重磅产品&#xff0c;阿里云“做深基础”成果浮出水面&#xff0c;底层自研技术迎来大爆发。 阿里云智能总裁张建锋表示&#xff0c;过去十二年&#xff0c;阿里云打造出中国…

CSS vs. JS Animation: 哪个更快

CSS vs. JS Animation: 哪个更快? CSS vs. JS Animation: 哪个更快? 基于JavaScript的动画竟然已经默默地比CSS的transition动画快了&#xff1f;而且&#xff0c;Adobe和 Google竟然一直在发布可以媲美原生应用的富媒体移动站点&#xff1f; 这篇文章将会逐点讲解基于JavaSc…