单例内置对象 Math

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

Math.E 自然对数的基数e的值
Math.LN10 10为底的自然对数
Math.LN2 2为底的自然对数
Math.LOG2E 以2为底e的对数
Math.LOG10E 以10为底e的对数
Math.PI π的值
Math.SQRT1_2 1/2的平方根
Math.SQRT2 2的平方根

min()和max()方法

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 

要知道数组中的最大值和最小值,可以像下面这样使用扩展操作符。使用这两个方法可以避免使用额外的循环和if语句来确定一组数值的最大最小值。

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

舍入方法

小数值舍入为整数的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.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  
console.log(Math.floor(25.9));  // 25 
console.log(Math.floor(25.5));  // 25 
console.log(Math.floor(25.1));  // 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);
function selectFrom(lowerValue, upperValue) {    
	let choices = upperValue - lowerValue + 1;  
 	return Math.floor(Math.random() * choices + lowerValue); 
 }  
 let num = selectFrom(2,10);
 console.log(num);  // 2~10范围内的值,其中包含2和10

注意 Math.random()方法在这里出于演示目的是没有问题的。如果是为了加密而需要生成随机数(传给生成器的输入需要较高的不确定性),那么建议使用window.crypto.getRandomValues()。

其他方法
下表还是总结了Math对象的其他方法。

方 法说 明
Math.abs(x)返回x的绝对值
Math.exp(x)返回Math.E的x次幂
Math.expm1(x)等于Math.exp(x) - 1
Math.log1p(x)等于1 + Math.log(x)
Math.pow(x, power)返回x的power次幂

等等。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值