Number和Math都属于JavaScript中的内置对象,Number数字类型作为基础数据类型,我们在开发过程中会经常用到,包括数字精度的格式化,还有字符串转换成数字等操作。
Number.EPSILON 两个可表示(representable)数之间的最小间隔。Number.MAX_SAFE_INTEGER JavaScript 中最大的安全整数 (2^53 - 1)。Number.MAX_VALUE 能表示的最大正数。最小的负数是 -MAX_VALUE。Number.MIN_SAFE_INTEGER JavaScript 中最小的安全整数 (-(2^53 - 1)).Number.MIN_VALUE 能表示的最小正数即最接近 0 的正数 (实际上不会变成 0)。最大的负数是 -MIN_VALUE。 Number.NaN 特殊的“非数字”值。 Number.NEGATIVE_INFINITY 特殊的负无穷大值,在溢出时返回该值。Number.POSITIVE_INFINITY 特殊的正无穷大值,在溢出时返回该值。new Number实例化数字对象和Number强转数字字符串,两个值的并不相等
var value1 = new Number("123");this.value1 = value1;console.log(`value1 === 123 is ${value1 === 123}`); // value1 === 123 is falsevar value2 = Number("123");this.value2 = value2;console.log(`value2 === 123 is ${value2 === 123}`); // value2 === 123 is true// 判断Number类型console.log(value1 instanceof Number);console.log(value2 instanceof Number);Number("123"); // 123Number("12.3"); // 12.3Number("12.00"); // 12Number("123e-1"); // 12.3Number(""); // 0Number(null); // 0Number("0x11"); // 17Number("0b11"); // 3Number("0o11"); // 9Number("foo"); // NaNNumber("100a"); // NaNNumber("-Infinity"); //-Infinitylet number1 = new Number("123");let number2 = 123;let number3 = "string";let number4 = null;console.log(Number.isNaN(number1)); // falseconsole.log(Number.isNaN(number2)); // falseconsole.log(Number.isNaN(number3)); // falseconsole.log(Number.isNaN(number4)); // falseconsole.log(Number.isNaN(NaN)); // trueconsole.log(Number.isFinite(1 / 0));// falseconsole.log(Number.isFinite(10 / 5));// trueconsole.log(Number.isFinite(0 / 0));// falsefunction checkInteger(x, y) { if (Number.isInteger(y / x)) { return "整数"; } return "非整数";}console.log(checkInteger(5, 10));// "整数"console.log(checkInteger(5, 11));// "非整数"备注:
Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。
一个安全整数是一个符合下面条件的整数:
可以准确地表示为一个IEEE-754双精度数字,
其IEEE-754表示不能是舍入任何其他整数以适应IEEE-754表示的结果。.
比如,2^53 - 1 是一个安全整数,它能被精确表示,在任何 IEEE-754 舍入模式(rounding mode)下,没有其他整数舍入结果为该整数。作为对比,2^53 就不是一个安全整数,它* 能够使用 IEEE-754 表示,但是 2^53 + 1 不能使用 IEEE-754 直接表示,在就近舍入(round-to-nearest)和向零舍入中,会被舍入为 2^53。
安全整数范围为 -(2^53 - 1)到 2^53 - 1 之间的整数,包含 -(2^53 - 1)和 2^53 - 1。
Number.isSafeInteger(3); // trueNumber.isSafeInteger(Math.pow(2, 53)); // falseNumber.isSafeInteger(Math.pow(2, 53) - 1); // trueNumber.isSafeInteger(NaN); // falseNumber.isSafeInteger(Infinity); // falseNumber.isSafeInteger("3"); // falseNumber.isSafeInteger(3.1); // falseNumber.isSafeInteger(3.0); // true备注:
function checkFloat(r) { return parseFloat(r);}console.log(checkFloat(4.567));// 4.567console.log(checkFloat("4.567abcdefgh"));// 4.567console.log(checkFloat("abcdefgh"));// NaN/** * * Number.parseInt() * 方法依据指定基数 [ 参数 radix 的值],把字符串 [ 参数 string 的值] 解析成整数。 * @params string:要解析的值。 如果此参数不是字符串,则使用ToString抽象操作将其转换为字符串。忽略此参数中的前导空格。 * @params radix:一个介于2到36之间的整数,代表字符串的基数(数学数字系统中的基)。小心-这并不是默认为10。 * 从给定字符串中解析的整数。如果基数小于11,且第一个非空白字符不能转换为数字,则返回NaN。 * * */ function checkInt(x, base) { const parsed = parseInt(x, base); if (isNaN(parsed)) { return 0; } return parsed * 100;}console.log(checkInt(" 0xF", 16));// 1500console.log(checkInt("321", 2));// 0var numObj = 5.123456;var n = numObj.toFixed(2); // 5.12var numObj = 5.123456;console.log("numObj.toPrecision() is " + numObj.toPrecision()); // 输出 5.123456console.log("numObj.toPrecision(5) is " + numObj.toPrecision(5)); // 输出 5.1235console.log("numObj.toPrecision(2) is " + numObj.toPrecision(2)); // 输出 5.1console.log("numObj.toPrecision(1) is " + numObj.toPrecision(1)); // 输出 5// 注意:在某些情况下会以指数表示法返回console.log((1234.5).toPrecision(2)); // "1.2e+3"var d = new Date("December 17, 1995 03:24:00");console.log(Number(d));在Number数字类型中,使用最多的应该是:
文章个人博客地址:javaScript中Number数字类型基本方法入门
欢迎关注公众号:程序猿布欧,不定期更新一些前端入门文章
创作不易,转载请注明出处和作者。