素材巴巴 > 程序开发 >

【JavaScript】 数值 Number

程序开发 2023-09-07 07:51:04

目录

  • 1.3 特殊数值
  • 1.4 数值相关的全局方法
  • 1.5 Number 对象
  • 1.6 Math 对象
  • 1.7 BigInt
  • 1 数值 number

    js 数值
    es6 数值

    1.1 数值储存

    JavaScript 内部,所有数字都是以 64 位浮点数形式储存,即使整数也是如此。所以,11.0是相同的,是同一个数。

    0.1 + 0.2 === 0.3;
     // false0.3 / 0.1; 
     // 2.9999999999999996(0.3 - 0.2) === 0.2 - 0.1;
     // false
     

    你知道 0.1 + 0.2 !== 0.3 是进制问题,但你讲不出个所以然,是吧?
    用了一天时间,我终于彻底搞懂了 0.1 + 0.2 是否等于 0.3!

    在这里插入图片描述

    // 0.1 化为二进制:
     0.000 11001100 11001100 11001100 11001100 11001100 11001100 1100 1100 11
     // 0.1 保留 52 位有效数字:
     0.000 11001100 11001100 11001100 11001100 11001100 11001100 1101 0// 0.2 化为二进制:
     0.00 11001100 11001100 11001100 11001100 11001100 11001100 1100 1100 11
     // 0.2 保留 52 位有效数字:
     0.00 11001100 11001100 11001100 11001100 11001100 11001100 1101 0// 0.1+0.2:
     0.000 11001100 11001100 11001100 11001100 11001100 11001100 1101 0
     0.001 10011001 10011001 10011001 10011001 10011001 10011001 1010
     ————————————————————————————————————————————————————————————————————
     0.010 01100110 01100110 01100110 01100110 01100110 01100110 0111 0
     // 保留 52 位尾数
     0.010 01100110 01100110 01100110 01100110 01100110 01100110 100 即
     0.0 10011001 10011001 10011001 10011001 10011001 10011001 1010 0
     // 转十进制
     0.30000000000000004
     
    // 解决方法
     let value = value * Math.pow(10, props.precision);
     let stepValue = stepValue * Math.pow(10, props.precision);showValue = value + stepValue;showValue = (showValue / Math.pow(10, props.precision)).toFixed(props.precision
     );showValue = Number(showValue);
     

    1.2 数值表示

  • 科学计数法表示

  • 123e3; // 123000
     123e-3; // 0.123
     3.1e12;
     0.1e-23;
     

    1.2.1 数值分隔符

    下面三个将字符串转成数值的函数,不支持数值分隔符。主要原因是语言的设计者认为,数值分隔符主要是为了编码时书写数值的方便,而不是为了处理外部输入的数据。

    Number("123_456"); // NaN
     parseInt("123_456"); // 123
     

    1.3 特殊数值

    1.3.1 正零和负零

    1.3.2 NaN

    NaN === NaN; // false
     

    1.3.3 Infinity

  • Infinity表示正的无穷,-Infinity表示负的无穷。
  • // 场景一
     Math.pow(2, 1024);
     // Infinity// 场景二
     0 / 0; // NaN
     1 / 0; // Infinity
     

    1.4 数值相关的全局方法

    isNaN("Hello"); // true
     // 相当于
     isNaN(Number("Hello")); // true
     

    1.5 Number 对象

    js Number 对象

    1.5.1 Number()

    1.5.2 Number 静态属性

  • Number.MAX_SAFE_INTEGER:=== Math.pow(2, 53) - 1

  • Number.MIN_SAFE_INTEGER:=== -Number.MAX_SAFE_INTEGER

  • 1.5.3 Number 静态方法

  • Number.parseInt()方法用于将字符串转为整数。

  • Number.parseFloat()方法用于将一个字符串转为浮点数。

  • Number.isInteger()用来判断一个数值是否为整数。

  • 1.5.4 Number 实例方法

  • Number.prototype.toFixed() 方法先将一个数转为指定位数的小数,然后返回这个小数对应的字符串。 (10.005).toFixed(2); // "10.01"
  • Number.prototype.toExponential() 将一个数转为科学计数法形式
  • Number.prototype.toPrecision()方法用于将一个数转为指定位数的有效数字。
  • Number.prototype.toLocaleString()方法接受一个地区码作为参数,返回一个字符串,表示当前数字在该地区的当地书写形式。
  • 1.5.5 自定义方法

    与其他对象一样,Number.prototype对象上面可以自定义方法,被Number的实例继承。

    1.6 Math 对象

    js Math 对象

    Math是 JavaScript 的原生对象,提供各种数学功能。该对象不是构造函数,不能生成实例,所有的属性和方法都必须在Math对象上调用

    1.6.1 Math 静态属性

    这些属性都是只读的,不能修改。

    1.6.2 Math 静态方法

    1.7 BigInt

    ES2020 引入了一种新的数据类型 BigInt(大整数),来解决这个问题,这是 ECMAScript 的第八种数据类型。BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。

    1234; // 普通整数
     1234n; // BigInt// BigInt 的运算
     1n + 2n; // 3n
     

    1.7.1 BigInt()

    1.7.2 BigInt 实例方法

    1.7.3 BigInt 静态方法


    标签:

    上一篇: MongoDB 2: 安装和使用 下一篇:
    素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。