Number 对象属性和方法
Number 对象
在 JavaScript 中, Number 是一种基本的数据类型,它是原始数值的包装对象。在必要时,JavaScript 会自动地把原始数值转化成 Number 对象。
构造函数 Number() 可以不与运算符 new 一起使用,而直接作为转化函数来使用。以这种方式调用 Number() 时,它会把自己的参数转化成一个数字,然后返回转换后的原始数值(或 NaN)。
它提供了处理数值的相关操作。
创建一个 Number 实例对象的方法:
- var num = Number(123)
- var num = new Number(123)
- var num = 123-""
Number 对象与其实例对象的属性和方法:
// Object.getOwnPropertyDescriptors(Number): name : {value: "Number", writable: false, enumerable: false, configurable: true} length : {value: 1, writable: false, enumerable: false, configurable: true} prototype : {value: Number, writable: false, enumerable: false, configurable: false} EPSILON : {value: 2.220446049250313e-16, writable: false, enumerable: false, configurable: false} MAX_SAFE_INTEGER : {value: 9007199254740991, writable: false, enumerable: false, configurable: false} MAX_VALUE : {value: 1.7976931348623157e+308, writable: false, enumerable: false, configurable: false} MIN_SAFE_INTEGER : {value: -9007199254740991, writable: false, enumerable: false, configurable: false} MIN_VALUE : {value: 5e-324, writable: false, enumerable: false, configurable: false} NEGATIVE_INFINITY : {value: -Infinity, writable: false, enumerable: false, configurable: false} NaN : {value: NaN, writable: false, enumerable: false, configurable: false} POSITIVE_INFINITY : {value: Infinity, writable: false, enumerable: false, configurable: false} isFinite : {writable: true, enumerable: false, configurable: true, value: ƒ} isInteger : {writable: true, enumerable: false, configurable: true, value: ƒ} isNaN : {writable: true, enumerable: false, configurable: true, value: ƒ} isSafeInteger : {writable: true, enumerable: false, configurable: true, value: ƒ} parseFloat : {writable: true, enumerable: false, configurable: true, value: ƒ} parseInt : {writable: true, enumerable: false, configurable: true, value: ƒ} // Object.getOwnPropertyDescriptors(Number.prototype): constructor : {writable: true, enumerable: false, configurable: true, value: ƒ} toString : {writable: true, enumerable: false, configurable: true, value: ƒ} toLocaleString : {writable: true, enumerable: false, configurable: true, value: ƒ} valueOf : {writable: true, enumerable: false, configurable: true, value: ƒ} toExponential : {writable: true, enumerable: false, configurable: true, value: ƒ} toFixed : {writable: true, enumerable: false, configurable: true, value: ƒ} toPrecision : {writable: true, enumerable: false, configurable: true, value: ƒ}
Number 方法与描述
方法 | 描述 |
---|---|
isFinite() | 判断是否一个有穷数 |
isInteger() | 判断是否一个整数 |
isNaN() | 判断是否一个NaN |
isSafeInteger() | 判断是否安全整数 |
parseFloat() | 把一个值解析为浮点数 |
parseInt() | 把一个值解析为整数 |
Number 常用方法
1.isFinite()
功能:判断是否有穷数。
语法:Number.isFinite(value)
参数:value,被检测是否有穷性的值
返回值:true 或 false
示例:
Number.isFinite(Infinity); // false Number.isFinite(NaN); // false Number.isFinite(-Infinity); // false Number.isFinite(0); // true Number.isFinite(2e64); // true // 注意:全局函数 isFinite('0') 会返回 true Number.isFinite('0'); // false
2.isInteger()
功能:判断是否整数。
语法:Number.isInteger(value)
参数:value,被检测是否整数的值
返回值:true 或 false
示例:
Number.isInteger(0); // true Number.isInteger(111111); // true Number.isInteger(-233333); // true Number.isInteger(0.0001111); // false Number.isInteger(Math.PI); // false Number.isInteger("10"); // false Number.isInteger([1]); // false Number.isInteger({a:1}); // false Number.isInteger(()=>1); // false Number.isInteger(Infinity); // false Number.isInteger(-Infinity); // false Number.isInteger(NaN); // false Number.isInteger(undefined); // false Number.isInteger(true); // false Number.isInteger(false); // false
3.isNaN()
功能:判断是否NaN。
语法:Number.isNaN(value)
参数:value,被检测是否NaN的值
返回值:true 或 false
示例:
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // 下面这几个如果使用全局的 isNaN() 时,会返回 true。 Number.isNaN("NaN"); // false,字符串 "NaN" 不会被隐式转换成数字 NaN。 Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN("blabla"); // false // 下面的都返回 false Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN("37"); Number.isNaN("37.37"); Number.isNaN(""); Number.isNaN(" ");
4.isSafeInteger()
功能:判断是否安全整数。可以认为安全整数就是 -9007199254740991 ~ 9007199254740991的整数
语法:Number.isSafeInteger(value)
参数:value,被检测是否安全整数的值
返回值:true 或 false
示例:
Number.isSafeInteger( 1); // true Number.isSafeInteger( 0); // true Number.isSafeInteger(-1); // true Number.isSafeInteger("1"); // false Number.isSafeInteger(1.1); // false Number.isSafeInteger(1.0); // true Number.isSafeInteger(Math.pow(2, 53) - 1) // true Number.isSafeInteger(Math.pow(2, 53)) // false Number.isSafeInteger(-(Math.pow(2, 53) - 1)) // true Number.isSafeInteger(-Math.pow(2, 53)) // false Number.isSafeInteger( 9007199254740991); // true Number.isSafeInteger( 9007199254740992); // false Number.isSafeInteger(-9007199254740991); // true Number.isSafeInteger(-9007199254740992); // false Number.isSafeInteger(NaN); // false Number.isSafeInteger(Infinity); // false
5.parseFloat()
功能:
- 把值解析为浮点数。
- 解析过程中遇到了正号(+)、负号(-)、数字(0-9)、小数点(.)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。
- 第二个小数点的出现也会使解析停止(在这之前的字符都会被解析)。
- 参数首位和末位的空白符会被忽略。
- 如果参数字符串的第一个字符不能被解析成为数字,则返回 NaN。
- parseFloat 也可以解析并返回 Infinity。
- parseFloat解析 BigInt 为 Numbers, 丢失精度。因为末位 n 字符被丢弃。
语法:Number.parseFloat(string)
参数:value,被解析的值。
返回值:浮点数或 NaN
示例:
// 以下示例都返回3.14 Number.parseFloat(3.14); Number.parseFloat('3.14'); Number.parseFloat(' 3.14 '); Number.parseFloat('3.14.15'); Number.parseFloat('314e-2'); Number.parseFloat('0.0314E+2'); Number.parseFloat('3.14todotodotodo'); Number.parseFloat({ toString: function() { return "3.14" } }); // 以下示例返回NaN parseFloat("ABCD233");
6.parseInt()
功能:把值解析为整数。
语法:Number.parseInt(string[, radix])
参数:
- string:要解析的值。 如果此参数不是字符串,则使用ToString抽象操作将其转换为字符串。忽略此参数中的前导空格。
- radix:一个介于2到36之间的整数,代表字符串的基数(数学数字系统中的基)。
- 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被解析为十六进制数。
- 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
- 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
返回值:整数或 NaN
示例:
// 以下例子均返回15: parseInt("0xF", 16); parseInt("F", 16); parseInt("17", 8); parseInt(021, 8); parseInt("015", 10); // parseInt(015, 10); 返回 13 parseInt(15.99, 10); parseInt("15,123", 10); parseInt("FXX123", 16); parseInt("1111", 2); parseInt("15 * 3", 10); parseInt("15e2", 10); parseInt("15px", 10); parseInt("12", 13); // 以下例子均返回 -15: parseInt("-F", 16); parseInt("-0F", 16); parseInt("-0XF", 16); parseInt(-15.1, 10); parseInt(" -17", 8); parseInt(" -15", 10); parseInt("-1111", 2); parseInt("-15e1", 10); parseInt("-12", 13); // 以下例子均返回 NaN: parseInt("Hello", 8); // 根本就不是数值 parseInt("546", 2); // 除了“0、1”外,其它数字都不是有效二进制数字
Number.prototype 常用方法与描述
方法 | 描述 |
---|---|
toExponential() | 强制将数值以指数形式显示。 |
toFixed() | 可把 Number 四舍五入为指定小数位数的数字。 |
toPrecision() | 定义显示一个数多少位数(包括位小数的左和右) |
Number.prototype 常用方法
1.toFixed()
功能:使用定点(四舍五入)表示法来格式化一个数值。
语法:num.toFixed(digits)。
参数:digits,小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。
返回值:根据 digits 四舍五入后的字符串。
示例:
var num = 12345.6789; num.toFixed(); // 返回 "12346":进行四舍六入五看情况,不包括小数部分 num.toFixed(1); // 返回 "12345.7":进行四舍六入五看情况 num.toFixed(6); // 返回 "12345.678900":用0填充 (1.23e+20).toFixed(2); // 返回 "123000000000000000000.00" (1.23e-10).toFixed(2); // 返回 "0.00" 2.34.toFixed(1); // 返回 "2.3" 2.35.toFixed(1) // 返回 '2.4'. Note it rounds up 2.55.toFixed(1) // 返回 '2.5'. Note it rounds down - see warning above -2.34.toFixed(1); // 返回 -2.3 (由于操作符优先级,负数不会返回字符串) (-2.34).toFixed(1); // 返回 "-2.3" (若用括号提高优先级,则返回字符串)
2.toExponential()
功能:以指数表示法返回该数值字符串表示形式。
语法:numObj.toExponential(fractionDigits)
参数:fractionDigits,一个整数,用来指定小数点后有几位数字。默认情况下用尽可能多的位数来显示数字。
返回值:一个科学记数法字符串。
示例:
var num = 77.1234; num.toExponential(); // 7.71234e+1 num.toExponential(4); // 7.7123e+1 num.toExponential(2); // 7.71e+177.1234.toExponential(); // 7.71234e+177 .toExponential(); // 7.7e+1
3.toPrecision()
功能:以指定的精度(四舍五入)返回该数值对象的字符串表示。
语法:num.toPrecision(precision)
参数:precision,一个用来指定有效数个数的整数。
返回值:以定点表示法或指数表示法表示的一个数值对象的字符串。
示例:
var num = 123.456789; num.toPrecision(); // "123.456789" num.toPrecision(1); // "1e+2" num.toPrecision(2); // "1.2e+2" num.toPrecision(3); // "123" num.toPrecision(4); // "123.5" num.toPrecision(5); // "123.46" num.toPrecision(10); // "123.4567890" num.toPrecision(15); // "123.456789000000"
JavaScript 中的三大对象 (本地对象、内置对象、 宿主对象)
本地对象
- Object 对象属性和方法
- String 对象属性和方法
- Array 对象属性和方法
- Date 对象属性和方法
- Number 对象属性和方法
- RegExp 对象属性和方法
- Function 对象属性和方法
- Boolean 对象属性和方法
- Error 对象属性和方法
内置对象
宿主对象