总结一下前端中Math和Number的常用API
总结一下前端中Math和Number的常用API再做原生JS项目时,我们经常会遇到那些,我们常用却容易忘记的API,所以今天我来总结一部分常用的API,但是要注意里面的一些坑!(这些坑都是关于判断Null,undefined,"",{},[],0,-0,true,false等)我把他们放到了文章最后的代码位置1. Math中的APIMath.random()随机产生一个[0,1)之间的数字Math
·
总结一下前端中Math和Number的常用API
再做原生JS项目时,我们经常会遇到那些,我们常用却容易忘记的API,所以今天我来总结一部分常用的API,但是要注意里面的一些坑!(这些坑都是关于判断Null,undefined,"",{},[],0,-0,true,false等)我把他们放到了文章最后的代码位置
1. Math中的API
- Math.random() 随机产生一个[0,1)之间的数字
- Math.**floor()**向下取整
- Math.ceil() 向上取整
注意:floor和ceil并不会四舍五入。
- Math.round() 四舍五入取整
- Math.PI 圆周率
- Math.sqrt() 开某一个数的平方
- Math.cbrt() 开某一个数的立方
- Math.pow() 开某一个数的指定次方,注意他有两个参数
- Math.abs() 求一个数的绝对值
- Math.min/max() 求最小(大)值
<script>
// 圆周率 π
console.log(Math.PI);
// 开某个数的平方/立方
// Math.sqrt()/cbrt()
console.log(Math.sqrt(4));
console.log(Math.cbrt(8));
// 开某个数的 N 次方
// Math.pow()
console.log(Math.pow(8, 1 / 3));
// 绝对值 Math.abs
console.log(Math.abs(-Infinity));
console.log(Math.abs(null));
console.log(Math.abs(false));
console.log(Math.abs(true));
// 向上取整/向下取整 Math.floor()/ceil
console.log(Math.floor(1.9999999));
console.log(Math.ceil(1.9999999));
// 四舍五入取整
console.log(Math.round(2.2));
console.log(Math.round(2.5));
console.log(Math.round(""));
// 取2或N个数之间的最小值
console.log(Math.min(-Infinity, 1, 2, -2.2, 4, 64, 54));
console.log(Math.max(-Infinity, 1, 2.5, -2, 4, 64, 54));
console.log(Math.max(null, undefined)); //NaN
console.log(Math.max(null, true)); //1
console.log(Math.max(4, ...[1, 2, 3]));
// 返回[0-1)之间的随机数
console.log(Math.random());
// 判断是正数/负数/0
console.log(Math.sign(-10));
console.log(Math.sign(0));
console.log(Math.sign(-0));
console.log(0 === -0);
// 注意floor 和 trunc 的区别
console.log(Math.floor(-1.9999999));
console.log(Math.trunc(-1.9999999));
</script>
2.Number中的API
因为Number和Window里面的API基本一致,但是有区别。Window下判断null == undefined 会返回true 常用的API就是如下这几条:
- Number.MAX_VALUE数字最大值
- Number.MAX_SAFE_INTEGER最大安全数值
(注意和Infinity进行比较)
注意:MAX_SAFE_INTEGER、 MAX_VALUE 、Infinity 他们三个的大小关系(他们的值按顺序依次变大)
Number.isNaN 判断 是非数字 (这个比较绕注意区分)不要翻译成是不是一个数字。。。一会就把你绕迷了=…=
- Number.parseInt() 把值/字符串类型(字符串必须以数字开头)强制转化成数字。
- Number.parseFloat() 把值类型强制转化成字符串。
如果转化不成功 不会报错,返回NaN!
- Number.**toFixed()**保留几位小数,注意不传参数代表保留0位
<script>
// 1.使用字面量定义一个数字
var num1 = 10;
// 2.使用构造函数
var num2 = Number("10");
// 3.使用创建实例 实例获取值 要调用valueOf()
// var num3 = new Number("true")//为字符串的时候不行。
var num3 = new Number(true);
console.log(num2 instanceof Number); //false
console.log(num3 instanceof Number); //true
console.log(num1);
console.log(num2);
console.log(num3);
console.log(num3.valueOf());
// console.log(num3.toString());
// 注意数字和字符串加减问题
// 最大/小安全整数 (+-)2^53-1
console.log(Number.MAX_SAFE_INTEGER);
console.log(Number.MIN_SAFE_INTEGER);
// 幂运算Math.pow(2,53) / log(2**53)
console.log("~".repeat(20));
// 数字最大值,比最大值还要大的就是 无穷大Infinity
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
if (Number.MAX_VALUE < Infinity) {
console.log("对");
}
if (Number.MAX_SAFE_INTEGER < Number.MAX_VALUE) {
console.log("对1");
}
console.log("~".repeat(20));
console.log(Number.POSITIVE_INFINITY === Infinity);
console.log(Number.NEGATIVE_INFINITY === -Infinity);
console.log("~".repeat(20));
console.log(Number.NaN);
console.log(window.NaN);
console.log(Number.NaN === window.NaN); //false
console.log(NaN === NaN); //false
// NaN跟任何值都不相等 包括他自己
// Number.isFinite 判断是不是有穷数
console.log("~".repeat(20));
// 是非数字返回true
console.log(window.isNaN(1));
console.log(window.isNaN("")); // '' 会转化成0 所以返回false
// 判断是不是数字
// Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true
function isNumber(value) {
if (isNaN(value)) {
return false;
}
return true;
}
function isNumber2(value) {
return typeof value === "number";
}
// 数字类型转换(掌握)
console.log(Number.parseInt(20.01));
console.log(Number.parseFloat(20.01));
// 第二个参数 表示第一个参数是几进制, 得到的结果永远是十进制
console.log(parseInt("2", 10)); //2
console.log(parseInt("2", 8)); //2
// 当parseInt()转换不成功 就返回NaN
// toFixed()保留几位小数 不传参数相当于参数为0 (不会四舍五入???)。 一般用来调整格式。
var num4 = 20.345;
var num5 = 20.245;
console.log(num4.toFixed()); //20
console.log(num4.toFixed(2));
console.log(num5.toFixed(2));
console.log(num4.toFixed(3));
</script>
更多推荐
已为社区贡献1条内容
所有评论(0)