数字方法
Number.isFinite()
Number.isFinite()
方法用来检测传入的参数是否是一个有穷数。
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
Number.isFinite()
Number.isInteger()
方法用来判断给定的参数是否为整数。
function fits(x, y) {
if (Number.isInteger(y / x)) {
return 'Fits!';
}
return 'Does NOT fit!';
}
console.log(fits(5, 10));
// Expected output: "Fits!"
console.log(fits(5, 11));
// Expected output: "Does NOT fit!"
Number.isNaN()
Number.isNaN()
方法确定传递的值是否为 NaN
,并且检查其类型是否为 Number
。它是原来的全局 isNaN()
的更稳妥的版本。
function typeOfNaN(x) {
if (Number.isNaN(x)) {
return 'Number NaN';
}
if (isNaN(x)) {
return 'NaN';
}
}
console.log(typeOfNaN('100F'));
// Expected output: "NaN"
console.log(typeOfNaN(NaN));
// Expected output: "Number NaN"
Number.isSafeInteger()
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); // true
Number.isSafeInteger(Math.pow(2, 53)) // false
Number.isSafeInteger(Math.pow(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
Number.parseFloat()
Number.parseFloat()
方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat()
函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)。
parseFloat("123"); // 123
Number.parseInt()
Number.parseInt()
方法依据指定基数,解析字符串并返回一个整数。
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
Number.prototype.toExponential()
toExponential()
方法以指数表示法返回该数值字符串表示形式。
var numObj = 77.1234;
alert("numObj.toExponential() is " + numObj.toExponential()); //输出 7.71234e+1
alert("numObj.toExponential(4) is " + numObj.toExponential(4)); //输出 7.7123e+1
alert("numObj.toExponential(2) is " + numObj.toExponential(2)); //输出 7.71e+1
alert("77.1234.toExponential() is " + 77.1234.toExponential()); //输出 7.71234e+1
alert("77 .toExponential() is " + 77 .toExponential()); //输出 7.7e+1
Number.prototype.toFixed()
toFixed()
方法使用定点表示法来格式化一个数值。
function financial(x) {
return Number.parseFloat(x).toFixed(2);
}
console.log(financial(123.456));
// Expected output: "123.46"
console.log(financial(0.004));
// Expected output: "0.00"
console.log(financial('1.23e+5'));
// Expected output: "123000.00"
Number.prototype.toLocaleString()
toLocaleString()
方法返回这个数字在特定语言环境下的表示字符串。在使用具有 Intl.NumberFormat
API 支持的实现时,此方法仅仅简单调用了 Intl.NumberFormat
。
function eArabic(x){
return x.toLocaleString('ar-EG');
}
console.log(eArabic(123456.789));
// Expected output: "١٢٣٬٤٥٦٫٧٨٩"
console.log(eArabic('123456.789'));
// Expected output: "123456.789"
console.log(eArabic(NaN));
// Expected output: "ليس رقم"
Number.prototype.toPrecision()
toPrecision()
方法以指定的精度返回该数值对象的字符串表示。
let numObj = 5.123456
console.log(numObj.toPrecision()) // 输出 '5.123456'
console.log(numObj.toPrecision(5)) // 输出 '5.1235'
console.log(numObj.toPrecision(2)) // 输出 '5.1'
console.log(numObj.toPrecision(1)) // 输出 '5'
numObj = 0.000123
console.log(numObj.toPrecision()) // 输出 '0.000123'
console.log(numObj.toPrecision(5)) // 输出 '0.00012300'
console.log(numObj.toPrecision(2)) // 输出 '0.00012'
console.log(numObj.toPrecision(1)) // 输出 '0.0001'
// 请注意,在某些情况下可能会返回科学计数法字符串
console.log((1234.5).toPrecision(2)) // 输出 '1.2e+3'
Number.prototype.toString()
toString()
方法返回指定 Number
对象的字符串表示形式。
var count = 10;
console.log(count.toString()); // 输出 '10'
console.log((17).toString()); // 输出 '17'
console.log((17.2).toString()); // 输出 '17.2'
var 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'
Number.prototype.valueOf()
valueOf()
方法返回一个被 Number
对象包装的原始值。
var numObj = new Number(10);
console.log(typeof numObj); // object
var num = numObj.valueOf();
console.log(num); // 10
console.log(typeof num); // number