• 第一百零八篇:最常用的基本数据类型(Number类型)


    好家伙,

    本篇内容为《JS高级程序设计》第三章学习笔记

     

    1.Number类型

    从名称中我们可以得出,这是一个存放数值的类型,

    不同的数值类型相应地也有不同的数值字面量格式

     

    Number类型可以储存不同进制的数(不常用就是了)

     八进制:在数前加一个零("0"),后续的数字中不能有大于7的数值,否则八进制无效

    十六进制:在数字前加一个零x("0x"),后面不可跟随超出十六进制的数,否则会十六进制无效

     

     

    1.1.浮点值

    定义浮点值,数值中必须包含小数点,而且小数点后面必须至少有一个数字

    小数点前可以没有数字,但推荐加上。

    (看上去有些奇怪,但可行)

    let a = 0.1;
    let b = .1;
    console.log(a,b);

     

     

     

     因为存储浮点值使用的内存空间是存储整数值的两倍,所以ECMAScript总是想方设法把值转换为整数。

    在小数点后面没有数字的情况下,数值就会变成整数。

    类似地,如果数值本身就是整数,只是小数点后面跟着0(如1.0),那它也会被转换为整数,

     

    let a = 10.0;
    let b = 10.;
    console.log(a, b);

     

     

     1.2.科学计数法

    使用科学计数法使数字表达更简洁

    其中在数字后面加上e10表示乘以10的十次方

    同理,e-10表示十的负十次方

    复制代码
    let a = 3.14e10;
    let b = 3.14e-10;
    let c =0.000005;
    let d =0.0000005;
    console.log(a, b);
    console.log(c, d);
    复制代码

     有趣的是,当小数点后的零大于等于6个后,将会被以科学计数法表示

     

    1.3.值的范围

    由于内存的限制,ECMAScript并不支持表示这个世界上的所有数值。

    ECMAScript可以表示的最小数值保存在Number.MIN_VALUE 中,这个值在多数浏览器中是 5e-324;

    可以表示的最大数值保存在Number.MAX_VALUE中,这个值在多数浏览器中是1.7976931348623157e+308。

    如果某个计算得到的数值结果超出了 JavaScript可以表示的范围,那么这个数值会被自动转换为一个特殊的 Infinity(无穷)值。

    任何无法表示的负数以Infinity(负无穷大)表示,任何无法表示的正数以Infinity(正面不无穷大)表示

    如果计算返回正 Infinity 或负 Infinity,则该值将不能再进一步用于任何计算。这是因为Infinity 没有可用于计算的数值表示形式。

    要确定一个值是不是有限大(即介于JavaScript能表示的最小值和最大值之间),可以使用isFinite()函数,如下所示:

    let result=Number.MAX_VALUE +Number.MAX_VALUE;
    
    console.log(isFinite(result)); // false 

     

     

    虽然超出有限数值范围的计算并不多见,但总归还是有可能的。因此在计算非常大或非常小的数值时,有必要监测一下计算结果是否超出范围。

    注意 使用 Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY 也可以获 取正、负Infinity

    没错,这两个属性包含的值分别就是-Infinity和Infinity。

     

     

    1.4.NaN(Not a Number)和Infinity

    NaN是一个特殊数值,就像他的翻译一样-----"不是数字",

    用于表示本来要返回数值的操作失败了(比如说某某数除以零,但并不抛出错误) 

    比如说0除以零,但并不抛出错误,而是返回NaN,

    而自然数除以0时,就是Infinity(无限)

    console.log(1/0);
    console.log(+0/-0);

     

     

     

    1.4.1.isNaN()方法 

    isNaN()方法用于判断一个数是否为NaN,(是否"不是数值"),

    他首先会调用对象的valueOf()方法,然后再确定是否可以转换为数值.

    如果不能,再调用toString()方法.并测试其返回值

    复制代码
    console.log(isNaN(0/0));
    console.log(isNaN(100));
    console.log(isNaN("true"));  //true  不可以被转化为数字一
    console.log(isNaN(true));    //false  可以被转化为数字一
    复制代码

     

     

     

     

    1.5.数值转换

    Number()方法可以将非数值转换为数值,

    Number()方法可用于任何类型数据

    (1)布尔值————true转换为1,false转换为0

    (2)数值————直接返回(你是来找茬的把?)

    (3)null————直接返回0

    (4)undefined————返回NaN

    (5)字符串————

    1.如果有进制表示字符与数字组合,那么转换为相应进制的数字

    2.空字符串,返回0,

    3.包含其他任何非进制表示字符,返回NaN

     

    (6)对象————调用valueOf方法,并按照上述规则转换返回的值,如果转化的结果是NaN,

    则调用toString()方法,再按照字符串转换规则转换

     

    来看看例子:

    复制代码
    let a = Number(true);
    let b = Number(87);
    let c = Number(null);
    let d = Number(undefined);
    let e = Number("panghu");
    console.log(a, b);
    console.log(c, d, e);
    复制代码

     

  • 相关阅读:
    微信在线点餐怎么做_怎么实现在微信公众号在线点餐
    基于JavaSwing开发植物连连看游戏 课程设计 大作业源码
    C++ 继承
    面试遇到并发编程,爽还是酸爽?
    云环境固有特性及其对密码效能的挑战
    Opencv实现的三次样条曲线(Cubic Spline)插值
    Blazor WebAssembly 渐进式 Web 应用程序 (PWA) 离线处理数据
    Jmeter接口测试学习
    VFP用上git来管理源代码,备份回滚,开发模式不影响正式版本,猫猫带你来入门
    【Android笔记30】Android中数据存储之SQLite数据库
  • 原文地址:https://www.cnblogs.com/FatTiger4399/p/16884815.html