今天刷Leetcode时,一道题的一部分需要找数组的最大值,初始值我想赋一个Js中能表示的最小值,打出了Number之后,发现后边提示了Number.MIN_VALUE
,以为是Js能表示的最小值就用了,结果出现了问题,查了一下才发现,Number.MIN_VALUE并不是Js能表示的最小的值,而是Js能表示的最小的正值,趁着这个机会,重新学习和总结了一下Js数字的最大最小值以及无穷大与无穷小的相关知识。
Number.MAX_VALUE,这个值为: 1.7976931348623157e+308,即Js能表示的最大的正数
-Number.MAX_VALUE,这个值为 -1.7976931348623157e+308,即Js能表示的最小的负数
Number.MIN_VALUE,这个值为:5e-32
Number.POSITIVE_INFINITY
和 Infinity
都代表无穷大,是一个大于任何数的数值, IEEE 754 标准规定,大于等于1.7976931348623158e+308 的数被认为是无穷大,注意这个是最后一位是8,比Number.MAX_VALUE大很多,即并不是比Number.MAX_VALUE大就是无穷大Number.POSITIVE_INFINITY
和-Infinity
都代表无穷小,是一个小于任何数的数值,同理小于等于-1.7976931348623158e+308 的数被认为是无穷小,即并不是比-Number.MAX_VALUE小就是无穷小var num1 = Number.MAX_VALUE + 100;
var num2 = Number.MAX_VALUE * 2;
console.log(Number.isFinite(num1)); //true
console.log(Number.isFinite(num2)); //false
Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY
是Number类的静态属性,而Infinity
是一个全局属性,即window对象的属性,在之前的ECMA规范中,Infinity的值是可以修改的。使用无穷大时,尽量使用Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY