您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JavaScript Math

Math 是内置对象, 它具有数学常数和的和。(MDN)

Math 对象提供了一些列的数学和常量,如三角、数、π等。

数学其实就是常用的数学中的,如三角。

其中用到较多的是使用 Math.random() 来产生数。

以下列举部分常用的。

Math.floor() 返回小于或等于给定数字的最大整数。

Math.floor就是对数进行向下取整。

var num1 = Math.floor();
var num2 = Math.floor();

console.log(num1); // :2
console.log(num2); // :2

因为是向下取整,不会进行四舍五入,所以不论是 2.4 还是 2.9 ,经过 Math.floor 处理后,都为 2

Math.ceil() 返回大于或等于给定数字的最小整数。

Math.ceil 就是对数进行向上取整。

var num1 = Math.ceil();
var num2 = Math.ceil();

console.log(num1); // :3
console.log(num2); // :3

与 Math.floor 相反,Math.ceil 向上取整,也不会进行四舍五入,所以结果都为 3 。

许多开发者经常会弄混 Math.floorMath.ceil ,其实可以根据名的中译来记忆,floor 可以理解成地板,ceil 可以理解成天花板,所以前者是向下取整,后者是向上取整。

Math 下的 random 后返回大于等于零且小于一的数,即区间 [0, 1)

var random = Math.random();

console.log(random);

可以尝试运行多次这段,random变量的值出现一样的概率很低。

事实上 Math.random() 产生的数并不是真正的数,其返回的“数”是由确定的算法得出的,这种数会称之为伪数

在需要数的需求时,大部分情况下不会是需要区间为 [0, 1) 的数,如按学号抽奖。

假设学号的范围是 1 至 100 ,那就需要产生 1 至 100 之数。

这样可以换个思路,数还是 [0, 1) 范围的大小,但是将这个值放大到 [1, 100] 区范围。

所以就可以把数的结果先放大 100 倍,即 Math.random() * 100 ,这时候产生的数,区间就是 [0, 100)

因为最小值需要的是0,而不是1,就可以将这个数表达式成 Math.random() * 100 + 1 ,这时候区间就变成了 [1, 101)

最后只要保证右侧的区间不大于 100 即可,因为右侧区间取不到 101 ,所以可以对结果进行向下取整。

最终表达式为:

Math.floor(Math.random() *  + );

由此就可以推出较为通用的数公式:

// 数区间:[下限, 上限]
Math.floor(Math.random() * 上限 + 下限);

许多数学常量被作为放在 Math 对象下,如欧拉常数(E)圆周率(PI)

var e = Math.E;
var pi = Math.PI;

console.log(e); // :2.718281828459045
console.log(pi); // :3.141592653589793

日常开发中,大部分情况下会选择自己维护常量,因为可以随时的统一的精度。

因为都是常量与,这里提供相应的列表供查阅,引用自 MDN 。

Math 对象包含了很多数学与常量,较常用的是用于产生伪数的 Math.random,根据特性可以推出数 [下限, 上限] 的公式 Math.floor(Math.random() * 上限 + 下限);

尽量将 Math 对象下的过一遍,留住印象,避免造不必要的轮子。


联系我
置顶