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 中的三大对象 (本地对象、内置对象、 宿主对象)

本地对象

 

内置对象

 

宿主对象

 

posted @ 2020-06-03 14:09  elfpower  阅读(1268)  评论(0编辑  收藏  举报