• 每日一学—JavaScript数字


    📚文章目录

    🧷补充: 关于JavaScript数字

    🔩精度

    🔩数字和字符串连接

    🔩数字字符串

    🔩八进制和十六进制

    🔩无穷(Infinity)和负无穷(-Infinity)

    🔩NaN - 非数字值

    🔩数字可以是对象


    接上文 

    每日一学—JavaScript Number对象

    🧷补充: 关于JavaScript数字

    JavaScript只有一种类型的数字。可以使用或不使用小数来编写数字。JavaScript数字始终是64位浮点数 与许多其他编程语言不同,JavaScript没有定义不同类型的数字,如整数,短整数,长整数,浮点数等。JavaScript编号始终存储为双精度浮点数,符合国际IEEE 754标准。此格式以64位存储数字,其中数字(分数)存储在位0到51位,指数存储在位52到62位,符号存储在位63中:

    值 (aka Fraction/Mantissa)指数(Exponent)符号(Sign)
    52 bits (0 - 51) 11 bits (52 - 62)1 bit (63)

    JavaScript 数字可以使用也可以不使用小数点来书写:

    1. var pi=3.14;    // 使用小数点
    2. var x=34;       // 不使用小数点
    '
    运行

    极大或极小的数字可通过科学(指数)计数法来写:

    1. var y=123e5;    // 12300000
    2. var z=123e-5;   // 0.00123
    '
    运行

    🔩精度

    整数(不使用小数点或指数计数法)最多为 15 位。

    1. var x = 999999999999999; // x 为 999999999999999
    2. var y = 9999999999999999; // y 为 10000000000000000
    '
    运行

    小数的最大位数是 17,但是浮点运算并不总是 100% 准确:

    var x = 0.2+0.1; // 输出结果为 0.30000000000000004'
    运行

    用乘法和除法解决上述问题

    var x = (0.2 * 10 + 0.1 * 10) / 10;       // x will be 0.3'
    运行

    🔩数字和字符串连接

    如果两个数字相加,结果将是一个数字:

    1. var x = 10;
    2. var y = 20;
    3. var z = x + y; // z 是 30 (一个数字)
    '
    运行

    如果添加两个字符串,结果将是字符串连接:

    1. var x = "10";
    2. var y = "20";
    3. var z = x + y; // z 是 1020 (一个字符串)
    '
    运行

    如果字符串和数字相加,结果将是字符串连接:

    1. var x = "10";
    2. var y = 20;
    3. var z = x + y; // z 是 1020 (一个字符串)
    '
    运行

    一个常见的错误是期望这个结果为30:

    1. var x = 10;
    2. var y = 20;
    3. var z = "结果为: " + x + y;
    '
    运行

    一个常见的错误是期望这个结果是102030:

    1. var x = 10;
    2. var y = 20;
    3. var z = "30";
    4. var result = x + y + z;
    '
    运行

    🔩数字字符串

    JavaScript字符串可以包含数字内容:

    1. var x = 100; // x 是数字
    2. var y = "100"; // y 是字符串
    '
    运行

    JavaScript将尝试在所有数字操作中将字符串转换为数字:

    这将有效:

    1. var x = "100";
    2. var y = "10";
    3. var z = x / y; // z 将会为 10
    '
    运行

    注意:将上例的除法改成其他运算符(- ,* ,%)一样有效。如果是“+”号,那就被编译成字符串拼接。


    🔩八进制和十六进制

    如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

    1. var y = 0377;
    2. var z = 0xFF;
    '
    运行

    注意:绝不要在数字前面写零,除非您需要进行八进制转换。  

    默认情况下,JavaScript 数字为十进制显示。

    但是你可以使用 toString() 方法 输出16进制、8进制、2进制。

    1. var myNumber=128;
    2. myNumber.toString(16); // 返回 80
    3. myNumber.toString(8); // 返回 200
    4. myNumber.toString(2); // 返回 10000000
    '
    运行

    🔩无穷(Infinity)和负无穷(-Infinity)

    Infinity(或-Infinity)是如果计算最大可能数字之外的数字,JavaScript将返回的值。

    1. var myNumber = 2;
    2. while (myNumber != Infinity) { // 执行直到无穷(Infinity)
    3. myNumber = myNumber * myNumber;
    4. }
    '
    运行

    除以0(零)也会产生Infinity:

    1. var x = 2 / 0; // x 将会是 Infinity
    2. var y = -2 / 0; // y 将会是 -Infinity
    '
    运行

    Infinity的数据类型是一个数字:typeof Infinity返回number

    typeof Infinity;     // 返回 "number"'
    运行

    🔩NaN - 非数字值

    NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

    你可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

    1. var x = 1000 / "Apple";
    2. isNaN(x); // 返回 true,因为x不是数字
    3. var y = 100 / "1000";
    4. isNaN(y); // 返回 false,因为x是一个数字
    '
    运行

    除以0是无穷大,无穷大是一个数字:

    1. var x = 1000 / 0;
    2. isNaN(x); // 返回 false
    '
    运行

    提防NaN。如果NaN在数学运算中使用,结果也将是NaN:

    1. var x = NaN;
    2. var y = 5;
    3. var z = x + y; // z 是 NaN
    '
    运行

    或者结果可能是字符串串联:

    1. var x = NaN;
    2. var y = "5";
    3. var z = x + y; // z 将会是 NaN5
    '
    运行

    NaN的数据类型是一个数字:typeof NaN返回number:

    typeof NaN;            // 返回 "number"'
    运行

    注意:NaN == NaN 执行结果是 false,且NaN == ...后面无论是什么都返回false


    🔩数字可以是对象

    通常,JavaScript数字是从文字创建的原始值:

    var x = 123;

    但是数字也可以用关键字new定义为对象:

    var y = new Number(123);

     使用==运算符时,相等的数字相等:

    1. var x = 500;
    2. var y = new Number(500);
    3. // (x == y) 为 true 因为 x 和 y 有相等的值
    '
    运行

    使用===运算符时,相等的数字不相等,因为===运算符期望类型和值都相等。

    1. var x = 500;
    2. var y = new Number(500);
    3. // (x === y) false 因为 x 和 y 数据类型不同
    '
    运行

    甚至更糟。对象无法比较:

    1. var x = new Number(500);
    2. var y = new Number(500);
    3. // (x == y) false 因为他们各属不同的对象
    '
    运行

    注意(x==y)和(x===y)之间的差异。比较两个JavaScript对象将始终返回false。


    参考来自

    JavaScript数字—蝴蝶教程

    JavaScript Number 对象 | 菜鸟教程

  • 相关阅读:
    Unity2D - 状态机(State Machine)详解
    src学习记录
    JuiceFS 在多云存储架构中的应用 | 深势科技分享
    「分布式」——微服务抽奖系统后台整合MyBatis-Plus
    mysql中的各种日志
    JS中的构造函数
    哈佛参考文献注释体系与学术规范
    【工具使用-VScode】VScode如何设置空格和tab键显示
    DJYOS开源往事二:DJYOS开源工作室时期
    Java实习生常规技术面试题每日十题Java基础(七)
  • 原文地址:https://blog.csdn.net/weixin_53231455/article/details/127099772