JavaScript 单例内置对象 Math 详解

Math

​ ECMAScript 提供了 Math 对象作为保存数学公式、信息和计算的地方。Math 对象提供了一些辅助计算的属性和方法。当代码开始执行时,全局上下文中会存在内置对象 Math。Math 对象包含辅助完成复杂计算的属性和方法。

注意:Math 对象上提供的计算要比直接在 JavaScript 实现的快得多,因为 Math 对象上的计算使用了 JavaScript 引擎中更高效的实现和处理器指令。但使用 Math 计算的问题是精度会因浏览器、操作系统、指令集和硬件而异。

Math 对象属性

​ Math 对象有一些属性,主要用于保存数学中的一些特殊值。下表列出了这些属性。

属性说明
Math.E自然对数的基数 e 的值
Math.LN1010 为底的自然对数
Math.LN22 为底的自然对数
Math.LOG2E以 2 为底 e 的对数
Math.LOG10E以 10 为底 e 的对数
Math.PIπ 的值
Math.SQRT1_21/2 的平方根
Math.SQRT22 的平方根

​ 这些值的含义和用法都是 ECMAScript 规范定义的,并可以在需要时使用。

min() 和 max() 方法

Math 对象也提供了很多辅助执行简单或复杂数学计算的方法。 min() 和 max() 方法用于确定一组数值中的最小值和最大值。这两个方法都接收任意多个参数,如下面的例子所示:

let max = Math.max(3, 54, 32, 16); 
console.log(max); // 54 

let min = Math.min(3, 54, 32, 16); 
console.log(min); // 3

在 3、54、32 和 16 中,Math.max() 返回 54,Math.min() 返回 3。使用这两个方法可以避免使用额外的循环和 if 语句来确定一组数值的最大最小值。 要知道数组中的最大值和最小值,可以像下面这样使用扩展操作符:

let values = [1, 2, 3, 4, 5, 6, 7, 8]; 
let max = Math.max(...values); 

舍入方法

​ 用于把小数值舍入为整数的 4 个方法:Math.ceil()、Math.floor()、Math.round() 和 Math.fround()。这几个方法处理舍入的方式如下所述。

  • Math.ceil() 方法始终向上舍入为最接近的整数。
  • Math.floor() 方法始终向下舍入为最接近的整数。
  • Math.round() 方法执行四舍五入。
  • Math.fround() 方法返回数值最接近的单精度(32 位)浮点值表示。

以下示例展示了这些方法的用法:

console.log(Math.ceil(25.9)); // 26 
console.log(Math.ceil(25.5)); // 26 
console.log(Math.ceil(25.1)); // 26 

console.log(Math.floor(25.9)); // 25 
console.log(Math.floor(25.5)); // 25 
console.log(Math.floor(25.1)); // 25

console.log(Math.round(25.9)); // 26 
console.log(Math.round(25.5)); // 26 
console.log(Math.round(25.1)); // 25 

console.log(Math.fround(0.4)); // 0.4000000059604645 
console.log(Math.fround(0.5)); // 0.5 
console.log(Math.fround(25.9)); // 25.899999618530273 

​ 对于 25 和 26(不包含)之间的所有值,Math.ceil() 都会返回 26,因为它始终向上舍入。 Math.round() 只在数值大于等于 25.5 时返回 26,否则返回 25。最后,Math.floor() 对所有 25 和 26(不包含)之间的值都返回 25。

random()方法

​ Math.random() 方法返回一个 0~1 范围内的随机数,其中包含 0 但不包含 1。对于希望显示随机名言或随机新闻的网页,这个方法是非常方便的。可以基于如下公式使用 Math.random() 从一组整数中随机选择一个数:

number = Math.floor(Math.random() * total_number_of_choices + first_possible_value) 

​ 这里使用了 Math.floor() 方法,因为 Math.random() 始终返回小数,即便乘以一个数再加上一个数也是小数。因此,如果想从 1~10 范围内随机选择一个数,代码就是这样的:

let num = Math.floor(Math.random() * 10 + 1); 

​ 这样就有 10 个可能的值(1~10),其中最小的值是 1。如果想选择一个 2~10 范围内的值,则代码就要写成这样:

let num = Math.floor(Math.random() * 9 + 2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值