【JavaScript】【语法】Number

89 阅读7分钟

前言

Number 对象是原始数值的包装对象。

Number 创建方式 new Number()。

语法var num = new Number(value);

对象属性

  • constructor:返回对创建此对象的 Number 函数的引用。
  • MAX_VALUE:可表示的最大的数
  • MIN_VALUE:可表示的最小的数
  • NEGATIVE_INFINITY:负无穷大,溢出时返回该值
  • POSITIVE_INFINITY:正无穷大,溢出时返回该值
  • NaN:非数字值
  • prototype:允许您可以向对象添加属性和方法。

ES6 新增的 属性

  • EPSILON: 表示 1 和比最接近 1 且大于 1 的最小 Number 之间的差别
  • MIN_SAFE_INTEGER: 表示在 JavaScript中最小的安全的 integer 型数字 (-(253 - 1))。
  • MAX_SAFE_INTEGER: 表示在 JavaScript 中最大的安全整数(253 - 1)。

一、精度

  • 整数,最多15位。999999999999999
  • 小数,最多17位。0.111111111111111

二、八进制和十六进制

  • 八进制

    前缀为0

    var y = 0377
    
  • 十六进制

    前缀为0和X

    var x = 0XFF
    
  • 进制间的转换

    方法:toString()

    • 转为8进制:a.toString(8)

    • 转为16进制:a.toString(16)

三、无穷大

无穷大,数字超过JS表达范围就是无穷大

  • 正无穷大:infinity
  • 负无穷大:-infinity

四、NaN

NaN,非数字值的特殊值

方法:

  • isNaN():判断该量是否是NaN
var x = 1000;
isNaA(x); // false
var y = NaN;
isNaN(y); // true

注意点: NaN != NaN。NaN不等于任何数,包括它自己

四、常用方法

4.1 parseFloat()

作用:将字符串转为浮点数

语法parseFloat(string)

参数值

  • string:必填,要解析的字符串

返回值:数值。如果第一个字符不能转换为数字,则返回 NaN。

注意点:

  • 只返回字符串中的第一个数字
  • 允许前导和尾随空格
  • 如果第一个字符不能转换为数字,parseFloat() 就返回 NaN。

示例: 演示地址

var a = parseFloat("10") // 10
var b = parseFloat("10.00") // 10
var c = parseFloat("10.33") // 10.33
var d = parseFloat("34 45 66") // 34
var e = parseFloat(" 60 ") // 60
var f = parseFloat("40 years") // 40
var g = parseFloat("He was 40") // NaN

4.2 parseInt()

作用:将字符串转为整数

语法parseInt(string, radix)

参数值

  • string:必填,要解析的字符串
  • radix:可选,代表要使用的数字系统的数字(从 2 到 36)。例如基数为 16(十六进制)表示字符串中的数字应从十六进制数解析为十进制数。如果 radix 参数被省略,JavaScript 假定如下:
    • 如果字符串以“0X”开头,则基数为16(十六进制)
    • 如果字符串以 "0" 开头,则基数为 8(八进制)。此特性已弃用
    • 如果字符串以任何其他值开头,则基数为 10 (十进制)

返回值:数值。如果第一个字符不能转换为数字,则返回 NaN。

注意点:

  • 只返回字符串中的第一个数字
  • 允许前导和尾随空格
  • 如果第一个字符串不能转换为数字,parseInt() 返回 NaN。

示例:

var a = parseInt("10"); // 10
var b = parseInt("10.00"); // 10
var c = parseInt("10.33"); // 10
var d = parseInt("34 45 66"); // 34
var e = parseInt(" 60 "); // 60
var f = parseInt("40 years"); // 40
var g = parseInt("He was 40"); // NaN

var h = parseInt("10", 10); // 10
var i = parseInt("010"); // 10
var j = parseInt("10", 8); // 8
var k = parseInt("0x10"); // 16
var l = parseInt("10", 16);  // 16

4.3 isFinite()

作用:判断传入的参数是否为无穷大

语法isFinite(value)

参数值

  • value: 必需,要测试的值

返回值:布尔值。如果值为 +infinity、-infinity 或 NaN,则返回 false,否则返回 true。

示例:

var a = isFinite(123); // true
var b = isFinite(-1.23); // true
var c = isFinite(5-2); // true
var d = isFinite(0); // true
var e = isFinite("123"); // true
var f = isFinite("Hello"); // false
var g = isFinite("2005/12/12"); // false

4.4 Number.isInteger()

ES6新增

作用:判断传入的参数是否为整数

语法Number.isInteger(value)

参数值

  • value: 必需,要检测的值

返回值:Boolean,如果是整数返回 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(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger("10");      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

4.5 isNaN()

NaN: Not a Number

作用:判断传递的参数是否为NaN(非数字)

语法isNaN(value)

参数值

  • value: 必需。要检测的值

返回值:布尔值。如果值为 NaN,则返回 true,否则返回 false。

注意点:

此函数不同于Number特定的 Number.isNaN()方法

  • 全局 isNaN 函数将测试值转换为数字,然后对齐进行测试
  • Number.isNaN() 不会将值转换为数字,并且不会为任何非数字类型的值返回true

示例:

// 全局 isNaN() 函数
isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true
isNaN(null) //false

// Number.isNaN()
Number.isNaN(123) //false
Number.isNaN(-1.23) //false
Number.isNaN(5-2) //false
Number.isNaN(0) //false
Number.isNaN('123') //false
Number.isNaN('Hello') //false
Number.isNaN('2005/12/12') //false
Number.isNaN('') //false
Number.isNaN(true) //false
Number.isNaN(undefined) //false
Number.isNaN('NaN') //false
Number.isNaN(NaN) //true
Number.isNaN(0 / 0) //true
Number.isNaN(null) //false

4.6 isSafeInteget()

ES6新增

作用:判断传递的参数是否为安全整数

语法Number.isSafeInteger(value)

参数值

  • value:必需。要检测的值

返回值:布尔型。如果是安全整数返回 true,否则返回 false。

拓展

  • 一个安全整数符合的条件:
    • 可以准确地表示为一个 IEEE-754 双精度数字。
    • 其 IEEE-754 表示不能是舍入任何其他整数以适应 IEEE-754 表示的结果。
  • 安全整数范围: -(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

4.7 toExponential()

作用:返回一个数字的指数形式的字符串

语法number.toExponential(value)

参数值

  • value: 可选。规定指数计数法中的小数位数,是0 ~ 20 之间的值,包括0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将使用尽可能多的数字

返回值:String。返回 Number Object 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。

示例:

var num = 5.56789;
num.toExponential(2); // '5.57e+0'
num.toExponential(3); // '5.568e+0'
num.toExponential(4); // '5.5679e+0'

4.8 toFixed()

作用:返回指定小数位数的表示形式

语法number.toFixed(value)

参数值

  • value: 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

返回值:String。小数点后有固定的 x 位数字

示例:

const a = 123;
const b = a.toFixed(2); // b:123.00

const a = 123.4567
const b = a.toFixed(2); // b: 123.46

4.9 toPrecision()

作用:返回一个指定精度的数字

语法number.toPrecision(value)

参数值

  • value:可选。规定要转换为几位数,该参数是 1 ~ 100 之间(且包括 1 和 100 )的值。如果省略了该参数,则调用方法 toString(),返回原始数字的字符串形式。可选。规定要转换为几位数,该参数是 1 ~ 100 之间(且包括 1 和 100 )的值。如果省略了该参数,则调用方法 toString(),返回原始数字的字符串形式。

返回值:String。可选。规定要转换为几位数,该参数是 1 ~ 100 之间(且包括 1 和 100 )的值。如果省略了该参数,则调用方法 toString(),返回原始数字的字符串形式。

示例:

const a = 123;
const b = a.toPrecision(2); // b: '1.2e+2'

4.10 toString()

作用:把数字转换为字符串,使用指定的基数

语法number.toString(radix)

参数值

  • radix: 可选。规定表示数字的基数,是 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。
    • 2:数字以二进制值显示
    • 8:数字以八进制值显示
    • 16:数字以十六进制值显示

返回值:String。把数字转换为字符串

示例:

var num = 15;
var n = num.toString(); // '15'

4.11 valueOf()

作用:返回一个Number 对象的基本数字值

语法number.valueOf()

返回值:Number。一个数的原始值

示例:

var num = 15;
var n = num.valueOf(); // 15