Javascript Number
Number 值表示像 37 或 -9.25 这样的浮点数。Number 构造函数包含常量和处理数值的方法。其他类型的值可以使用 Number() 函数转换为数字。
常用方法
- isFinite()
- 作用:判断是不是一个有限数(该数字既不是正的 Infinity,也不是负的 Infinity 或 NaN。)
- 语法:Number.isFinite(value) 参数value为要检测的值
- 返回值:true/false
console.log(Number.isFinite(1 / 0));
// Expected output: false
console.log(Number.isFinite(10 / 5));
// Expected output: true
console.log(Number.isFinite(0 / 0));
// Expected output: false
// 全局isFinite()会强制转为数字,Number.isFinite()不会强制转。
isFinite("0"); // true;强制转换为数字 0
Number.isFinite("0"); // false
isFinite(null); // true;强制转换为数字 0
Number.isFinite(null); // false
- Number.isInteger()
- 作用:判断传入值是否为整数。
- 语法:Number.isInteger(value) 要测试是否为整数的值。
- 返回值:true/false
Number.isInteger(0); // true
Number.isInteger(1); // true
Number.isInteger(-100000); // true
Number.isInteger(0.1); // false
Number.isInteger(Math.PI); // false
Number.isInteger(NaN); // false
Number.isInteger(Infinity); // false
Number.isInteger(-Infinity); // false
Number.isInteger("10"); // false
Number.isInteger(true); // false
Number.isInteger(false); // false
Number.isInteger([1]); // false
- isNaN()
- 作用:判断是否为 NaN。Number.isNaN() 和全局 isNaN() 之间的区别是Number.isNaN() 不会将参数转换为数字,因此非数字总是返回 false。
- 语法:Number.isNaN(value) value要测试是否为 NaN 的值。
- 返回值:true/false
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true
Number.isNaN(37); // false
- isSafeInteger()
- 作用:判断是否是一个安全整数。安全整数由 -(253 - 1) 到 253 - 1 的所有整数组成。
- 语法:Number.isSafeInteger(value) value要测试的值。
- 返回值:true/false
Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(2 ** 53 - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
- parseFloat()
- 作用:解析浮点数,与全局函数 parseFloat() 具有相同的功能。
- 语法:Number.parseFloat(string) string为要解析的值,会强制转为字符串。
- 返回值:浮点数,若无法解析出一个数字返回NaN。
console.log(Number.parseFloat("3.14QDEDRRVR")) // 3.14
console.log(Number.parseFloat("QDED3.14RRVR")) // NaN
console.log(Number.parseFloat("QDEDRRVR3.14")) // NaN
- parseInt()
- 作用:解析整数,与全局函数 parseInt() 具有相同的功能。
- 语法:Number.parseInt(string, radix) string要被解析的值。 radix 可选,2 到 36 之间的整数,表示 string 的基数(数学记数系统中的基)。如果 radix 为 undefined 或 0,则 radix 将被默认设置为 10,除非该数字以码元对 0x 或 0X 开头,在这种情况下,radix 将被默认设置为 16。
- 返回值:整数,若无法解析出一个数字返回NaN。
console.log(Number.parseFloat("3.14QDEDRRVR")) // 3
console.log(Number.parseFloat("QDED3.14RRVR")) // NaN
console.log(Number.parseFloat("QDEDRRVR3.14")) // NaN
function roughScale(x, base) {
const parsed = Number.parseInt(x, base);
if (Number.isNaN(parsed)) {
return 0;
}
return parsed * 100;
}
console.log(roughScale(' 0xF', 16));
// Expected output: 1500
console.log(roughScale('321', 2));
// Expected output: 0
- toExponential()
- 作用:指数表示法
- 语法:toExponential(fractionDigits) fractionDigits可选,一个整数,用来指定小数点后有几位数字。默认设置为完整表示该数字所需要的数字。
- 返回值:指数字符串
function expo(x, f) {
return Number.parseFloat(x).toExponential(f);
}
console.log(expo(123456, 2));
// Expected output: "1.23e+5"
console.log(expo('123456'));
// Expected output: "1.23456e+5"
console.log(expo('oink'));
// Expected output: "NaN"
- toFixed()
- 作用:小数位数格式化。如果需要截断,则将数字四舍五入;如果小数位数不足,则小数部分用零填充
- 语法:toFixed(digits) digits可选,小数点后的位数。应该是一个介于 0 和 100 之间的值,包括 0 和 100。如果这个参数被省略,则被视为 0。
- 返回值:指定小数位数的字符串
const numObj = 12345.6789;
numObj.toFixed(); // '12346';四舍五入,没有小数部分
numObj.toFixed(1); // '12345.7';向上舍入
numObj.toFixed(6); // '12345.678900';用零补足位数
-2.34.toFixed(1); // -2.3,数字 由于toFixed优先级高于减号,需要将负数表达式组合则会返回字符串
(-2.34).toFixed(1); // '-2.3'
- toPrecision()
- 作用:以指定精度表示数字的字符串。
- 语法:toPrecision(precision) precision可选,指定有效位数的整数。
- 返回值:以定点表示法或指数表示法表示 Number 对象的字符串,如果 precision 参数被省略,则与 Number.prototype.toString() 行为相同。
function precise(x) {
return x.toPrecision(4);
}
console.log(precise(123.456));
// Expected output: "123.5"
console.log(precise(0.004));
// Expected output: "0.004000"
console.log(precise(1.23e5));
// Expected output: "1.230e+5"
- toString()
- 作用:数字转为字符串。
- 语法:toString(radix) radix可选,一个整数,范围在 2 到 36 之间,用于指定表示数字值的基数。默认为 10。
- 返回值:指定数字值的字符串。
const count = 10;
console.log(count.toString()); // "10"
console.log((17).toString()); // "17"
console.log((17.2).toString()); // "17.2"
const x = 6;
console.log(x.toString(2)); // "110"
console.log((254).toString(16)); // "fe"
console.log((-10).toString(2)); // "-1010"
console.log((-0xff).toString(2)); // "-11111111"
- valueOf()
- 作用:获取数字的值,该方法通常由 JavaScript 在内部调用,而非在 Web 代码中显式调用。
- 语法:valueOf()
- 返回值:表示指定 Number 对象的原始值的数字。
const numObj = new Number(42);
console.log(typeof numObj);
// Expected output: "object"
const num = numObj.valueOf();
console.log(num);
// Expected output: 42
console.log(typeof num);
// Expected output: "number"