热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端开发系列009基础篇之JavaScript内置Math

title:前端开发系列009-基础篇之JavaScript内置Mathtags:-javaScript系列categories:[]date:2017-05-0822:23:23

title: '前端开发系列009-基础篇之Javascript内置Math'
tags:
- Javascript系列
categories: []
date: 2017-05-08 22:23:23

本文介绍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


推荐阅读
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文介绍了一种专为清洁工人设计的自定义文本烟花效果。通过该功能,用户可以输入特定的感谢或祝福语句,系统将生成绚丽的烟花动画,以表达对清洁工人的敬意和感激之情。该特效不仅美观,还能增强用户的互动体验,提升公共场合的氛围。 ... [详细]
  • 开发笔记:校园商铺系统中店铺注册功能模块的Controller层优化与重构
    开发笔记:校园商铺系统中店铺注册功能模块的Controller层优化与重构 ... [详细]
  • 如何在DataGridView中实现带有图标的单元格显示
    本文详细探讨了在C# WinForms应用程序中,如何通过DataGridView控件实现带有图标的单元格显示。文章不仅提供了具体的实现方法,还深入解析了相关技术细节,对于希望提升用户界面交互体验的开发者而言,具有很高的参考价值。 ... [详细]
  • Java NIO Buffer详解及其优势与局限性分析 ... [详细]
  • 智能网联汽车自动驾驶功能测试场地的方法与标准要求
    智能网联汽车自动驾驶功能测试场地的方法与标准要求 ... [详细]
  • 在运行时动态获取Entity Framework中的ObjectSet可以通过反射机制实现。这种方法允许开发者在应用程序运行期间根据需要加载不同的实体集合,从而提高代码的灵活性和可扩展性。通过使用`DbContext`类的`Set`方法,结合类型信息,可以轻松地实现这一目标。此外,还可以利用`Type`对象和泛型方法来进一步增强动态性,确保在处理多种实体类型时更加高效和安全。 ... [详细]
  • 本文探讨了如何在 Google Sheets 中通过自定义函数实现 AJAX 调用。具体介绍了编写脚本的方法,以便在电子表格中发起 AJAX 请求,从而实现数据的动态获取与更新。这种方法不仅简化了数据处理流程,还提高了工作效率。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 使用 MyEclipse 和 TestNG 测试框架在 Java 中高效进行单元测试
    通过MyEclipse集成TestNG测试框架,可以在Java开发中高效地进行单元测试。本文介绍了在JDK 1.8.0_121和MyEclipse 10.0离线环境下配置和使用TestNG的具体步骤,帮助开发者提高测试效率和代码质量。 ... [详细]
  • 本文探讨了使用JavaScript实现多种经典排序算法的高效方法,包括冒泡排序、选择排序、插入排序、归并排序和快速排序。为了确保代码的结构清晰和可维护性,我们首先定义了一个 `ArrayList` 类,该类中包含了待排序的数组声明。通过这种方式,我们不仅能够更好地组织代码,还能提高算法的执行效率和可读性。此外,我们还对每种排序算法进行了详细的性能分析和优化建议,以帮助开发者在实际应用中选择最合适的排序方法。 ... [详细]
author-avatar
qinqin20082602898705
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有