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

一百零八,常用,基本,数据类型,number,类型 · 浏览次数 : 343

小编点评

**JS高级程序设计第三章学习笔记** **1. Number 类型** * 存放数值的类型 * 不同的数值类型对应不同的数值字面量格式 **2. 浮点值** * 小数点后必须至少有一个数字 * 小数点前可以没有数字,但推荐加上 **3. 科学计数法** * 使用科学计数法使数字表达更简洁 * 在数字后面加上 e10 或 e-10 表示乘以 10 的十次方或十的负十次方 **4. 范围限制** * JavaScript 可以表示的最小数值保存在 Number.MIN_VALUE 中,其值为 5e-324 * JavaScript 可以表示的最大数值保存在 Number.MAX_VALUE 中,其值为 1.7976931348623157e+308 **5. NaN (Not a Number)** * 用于表示本来要返回数值的操作失败 * 例如 0除以 0,返回 NaN **6. 运算结果** * NaN 和 Infinity 是特殊数值,表示无法表示的数值 * NaN 可以被转换为数字 1 或 0,根据是否可以转换为数字 * Infinity 可以转换为数字 0,但只能用于特定计算 **7. Number() 方法** * 将非数值转换为数值 * 可用于任何类型数据 * 1 为布尔值 true,0 为布尔值 false **8. 对象方法** * getValue() 方法用于获取对象的属性值 * toString() 方法用于将数值转换为字符串

正文

好家伙,

本篇内容为《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);

 

与第一百零八篇:最常用的基本数据类型(Number类型)相似的内容:

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

最常用的基本数据类型(Number类型)

第一百零五篇:变量的原始值和引用值

好家伙,JS基础接着学, 本篇内容为《JS高级程序设计》第四章学习笔记 1.原始值和引用值 ECMAScript变量可以包含两种不同类型的数据:原始值和引用值。原始值(primitive value)就是最简单的数据,引用值(reference value)则是由多个值构成的对象。 在把一个值赋给变

第一百零六篇:变量的不同声明(var,let和const的不同)

JS关于变量的声明,变量提升,暂时性死区

第一百零七篇:基本数据类型(undefined,null,boolean类型)

好家伙, 本篇内容为《JS高级程序设计》第三章学习笔记 1.数据类型 ECMAScript有6种简单数据类型(称为原始类型): Undefined, Null, Boolean, Number, String和Symbol。 Symbol (符号)是ECMAScript6新增的。还有一种复杂数据类型

第一百一十篇:内存泄漏和垃圾回收(JS)

好家伙,本篇内容为《JS高级程序设计》第四章的学习笔记 1.内存泄露 1.1.什么是内存泄漏? 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏缺陷具有隐蔽性、积累性的特征,比其

第一百一十一篇:基本引用类型Date

好家伙,本篇为《JS高级程序设计》第五章的学习笔记 1.基本引用类型 引用值(或者对象)是某个特定引用类型的实例,在ECMAScript中,引用类型是把数据和功能组织到一起的结构,(像极了“类”) 经常被人错误的称作“类”。 虽然从技术上讲JavaScript是一门面向对象语言,但是ECMAScri

第一百一十四篇: JS数组Array(三)数组常用方法

好家伙,本篇为《JS高级程序设计》第六章“集合引用类型”学习笔记 1.数组的复制和填充 批量复制方法 copyWithin(),以及填充数组方法fill()。 这两个方法的函数签名类似,都需要指定既有数组实例上的一个范围,包含开始索引,不包含结束索引。 使用这个方法不会改变数组的大小。 1.1.fi

第一百一十五篇: JS集合引用类型Map

好家伙,本篇为《JS高级程序设计》第六章“集合引用类型”学习笔记 1.Map ECMAScript6以前,在JavaScript中实现“键/值”式存储可以使用object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。 但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定

第一百一十六篇: JavaScript理解对象

好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.关于对象 ECMA-262将对象定义为一组属性的无序集合。严格来说,这意味着对象就是一组没有特定顺序的值。 对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值。正因为如此(以及其他还未讨论的原因),可以把 EC

第一百一十二篇: JS数组Array(一)数组基本用法

好家伙, 1.数组 Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大区别。 跟其他语言中的数组一样,ECMAScript 数组也是一组有序的数据, 但跟其他语言不同的是,数组中每个槽位可以存储任意类型的数据。 这意味着可以创建一个数组,它的第