本文介绍JavaScript中的内置对象Math,以及Math的常用方法。

一、Math简单介绍

ECMAScript为我们提供了一个专门处理数学计算的内置对象——Math对象。Math对象提供了很多数学专业计算中可能会用到的特殊值(譬如 π )常量,以及封装好的工具函数(譬如 求N个数最大值、最小值、随机数、绝对值、平方根以及正玄和反余值等)。

这里先通过console.dir()方法打印Math对象的所有成员,我们可以通过下面列出的打印信息对Math对象有一个简单的了解。

console.dir(Math);
Math
E: 2.718281828459045 //自然对数的底数,常量e的值
LN2: 0.6931471805599453 //2的自然对数
LN10: 2.302585092994046 //10的自然对数
LOG2E: 1.4426950408889634 //以2为底e的对数
LOG10E: 0.4342944819032518 //以10为底e的对数
PI: 3.141592653589793 //π的值
SQRT1_2: 0.7071067811865476 //1/2的平方根(2的平方根的倒数)
SQRT2: 1.4142135623730951 //2的平方根
abs: ƒ abs() //求参数的绝对值
acos: ƒ acos() //返回参数的反余弦值
acosh: ƒ acosh()
asin: ƒ asin() //返回参数的反正玄值
asinh: ƒ asinh()
atan: ƒ atan() //返回参数的反正切值
atan2: ƒ atan2() //Math.atan2(y,x) 返回y/x的反正切值
atanh: ƒ atanh()
cbrt: ƒ cbrt()
ceil: ƒ ceil() //执行向上舍入(将数值向上舍入为最接近的整数)
clz32: ƒ clz32()
cos: ƒ cos() //返回参数余弦值
cosh: ƒ cosh()
exp: ƒ exp() //返回Math.E的参数次幂
expm1: ƒ expm1()
floor: ƒ floor() //执行向下舍入(将数值向下舍入为最接近的整数)
fround: ƒ fround()
hypot: ƒ hypot()
imul: ƒ imul()
log: ƒ log() //返回参数的自然对数
log1p: ƒ log1p()
log2: ƒ log2()
log10: ƒ log10()
max: ƒ max() //返回参数列表中的最大值
min: ƒ min() //返回参数列表中的最小值
pow: ƒ pow() //Math.pow(n,p) 返回n的p次幂
random: ƒ random() //返回0~1之间的随机数
round: ƒ round() //执行标准的舍入(数学意义的舍入规则)
sign: ƒ sign()
sin: ƒ sin() //返回参数的正弦值
sinh: ƒ sinh()
sqrt: ƒ sqrt() //返回参数的平方根
tan: ƒ tan() //返回参数的正切值
tanh: ƒ tanh()
trunc: ƒ trunc()
Symbol(Symbol.toStringTag): "Math"
__proto__: Object

二、Math常用方法

Math.abs()方法返回参数值的绝对值。

  console.log(Math.abs(16));              //16
console.log(Math.abs(-6)); //6

Math.max()方法返回参数之中最大的那个值,Math.min()返回参数列表中最小的那个值。如果参数为空, Math.min返回Infinity, Math.max返回-Infinity。

  /*01-求参数列表的最大值和最小值*/
console.log(Math.max(2, -1, 5, 18)); // 18
console.log(Math.min(2, -1, 5, 21)); // -1 /*02-测试参数列表为空的情况*/
console.log(Math.min()); // Infinity
console.log(Math.max()); // -Infinity

Math.pow(x,y)方法返回以第一个参数为底数、第二个参数为幂的指数值,即求x的y次幂。

console.log(Math.pow(2,3));   //8     2的3次幂
console.log(Math.pow(2,-1)); //0.5 2的-1次幂 /*计算 圆的面积 = πr的平方*/
var radius = 20;
var area = Math.PI * Math.pow(radius, 2);

Math.round方法用于执行四舍五入操作。

Math.ceil()方法用于返回大于参数值的最小整数(天花板值)。

Math.floor()方法用于返回大于参数值的最大整数(地板值)。

  /*01-Math.round() 执行正常的四舍五入操作*/
console.log(Math.round(0.1)); // 0
console.log(Math.round(0.5)); // 1
console.log(Math.round(0.6)); // 1
/*负值的处理*/
console.log(Math.round(-1.1)); // -1
console.log(Math.round(-1.5)); // -1 注意特殊情况
console.log(Math.round(-1.7)); // -2 /*02-Math.ceil() 大于参数值的最小整数*/
console.log(Math.ceil(3.1)); // 4
console.log(Math.ceil(3.5)); // 4
console.log(Math.ceil(3.9)); // 4
console.log(Math.ceil(-3.1)); //-3
console.log(Math.ceil(-3.5)); //-3
console.log(Math.ceil(-3.9)); //-3 /*03-Math.floor() 小于参数值的最大整数*/
console.log(Math.floor(3.1)); // 3
console.log(Math.floor(3.5)); // 3
console.log(Math.floor(3.9)); // 3
console.log(Math.floor(-3.1)); //-4
console.log(Math.floor(-3.5)); //-4
console.log(Math.floor(-3.9)); //-4

Math.sqrt()方法返回参数值的平方根,如果参数是一个负值,则返回NaN。

console.log(Math.sqrt(4));          //2
console.log(Math.sqrt(-4)); //NaN
console.log(Math.sqrt(9)); //3

Math.random()方法返回0到1之间的一个伪随机数,取值区间为[ 0 , 1 )

console.log(Math.random());   //0.6260459147033315
console.log(Math.random()); //0.5273094529873636 /*封装两个生成随机数的方法*/
function getRandom(min, max) {
return Math.random() * (max - min) + min;
} function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} getRandom(1, 8) // 6.919178146646834
getRandomInt(1, 8) // 5
/*如果需要对结果取整,那么使用Math.floor或者是parseInt函数处理*/

Math对象除了上述工具函数外,还提供一系列的三角函数方法。

    //Math.sin():返回参数的正弦      (参数为弧度值)
//Math.cos():返回参数的余弦 (参数为弧度值)
//Math.tan():返回参数的正切 (参数为弧度值)
//Math.asin():返回参数的反正弦 (返回值为弧度值)
//Math.acos():返回参数的反余弦 (返回值为弧度值)
//Math.atan():返回参数的反正切 (返回值为弧度值) console.log(Math.sin(0)); // 0
console.log(Math.cos(0)); // 1
console.log(Math.tan(0)); // 0
console.log(Math.sin(Math.PI / 2)); // 1

前端开发系列009-基础篇之JavaScript内置Math的更多相关文章

  1. 前端开发【第5篇:JavaScript进阶】

    语句 复合表达式和空语句 复合表达式意思是把多条表达式连接在一起形成一个表达式 { let a = 100; let b = 200; let c = a + b; } 注意这里不能再块级后面加分号, ...

  2. 前端开发【第4篇:JavaScript基础】

    JavaScript简述 上一篇文章已经聊过JavaScript的历史了这里不再复述了直接切入正题,JavaScript是一门解释型.动态类型.弱类型语言. 解释型语言和编译型语言就类似看一本书,编译 ...

  3. 前端开发【第3篇:JavaScript序】

    JavaScript历史 聊聊JavaScript的诞生 JavaScirpt鼻祖:Bremdan Eich(布兰登·艾奇),JavaScript的诞生于浏览器的鼻祖网景公司(Netscape),发布 ...

  4. 前端开发【第6篇:JavaScript客户端(浏览器)】

    Web浏览器中的JavaScript 客户端JavaScript时间线 1.Web浏览器创建Document对象,并且开始解析web页面,解析HTML元素和它门的文本内容后添加Element对象和Te ...

  5. 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)

    背景 ​ 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...

  6. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  7. ESP8266开发之旅 基础篇① 走进ESP8266的世界

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  8. ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  9. ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  10. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

随机推荐

  1. Unity/Auto Layout -- 理解Layout Elements(布局元素)

  2. Python科学计算系列5—导数

    1.一元函数的导数 例1:求下列函数的导数 例2:求下列函数的50阶导数 代码如下: from sympy import * x = symbols('x') f1 = diff(tan(x)) f2 ...

  3. DPDI(Dispatch PDI)kettle调度管理平台之实操演练第001讲--手工调度本地PDI任务生成日期维度数据

    DPDI实操演练第一讲 1.DPDI简介 DPDI Online 您的智能ETL任务调度专家 DPDI Online 是一款基于Kettle的强大在线任务调度平台,凭借其高效与灵活性,专为调度和监控K ...

  4. 浏览器js如何获取系统信息?

    在浏览器中,JavaScript 无法直接获取完整的系统级信息(如硬件配置.操作系统版本等),但可以通过以下 API 获取部分与设备和浏览器相关的信息: ​​1. 使用 navigator 对象​​ ...

  5. stackbd:在一个块设备上堆叠另一个块设备

    stackbd 是一个虚拟的块设备,它作为另一个块设备的前端,如 USB 闪存盘或循环设备.它将I/O请求传递给底层设备,同时它打印请求信息用于调试.它还有可能修改请求. 堆叠块设备(stackbd) ...

  6. hadoop部署安装(六)hive

    5.配置hive 5.1 hive下载地址 http://mirror.bit.edu.cn/apache/hive/ 解压缩 [root@master ~]# tar xf apache-hive- ...

  7. linux系统权限管理

    一.认识linux系统的文件权限 首先随便在一个目录下使用ls -l(可简写为ll)指令,就会把该目录下所有的文件和目录的权限显示出来,例如,在根目录下使用ls -l: (深蓝字:目录,白字:文件,浅 ...

  8. 关于μkeil v5.40(keil5) 如何使用STM32(ARM)虚拟下载器进行Proteus联调

    最近我心血来潮,想用Proteus+keil5进行联调,但仔细在网上一找,全是某SDN扒下来的陈年老黑X,都快转出数字包浆了还在用,完完全全跟不上时代,也全是51单片机的版本,STM32(ARM)根本 ...

  9. dom操作补充

    s5.html <!DOCTYPE html> <html lang="en"> <head>     <meta charset=&qu ...

  10. 私人问卷收集系统-Surveyking问卷收集系统

    前言 但凡提及问卷收集系统,问卷星与腾讯问卷通常都为大家首选问卷调查系统. 担心数据安全,海量问卷管理不便,工作流创建困难?快速部署自有问卷调查系统开始你的问卷调查之旅. 无论是问卷调查,考试系统,公 ...