5

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

 1 year ago
source link: https://www.cnblogs.com/FatTiger4399/p/16884815.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

好家伙,

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

1.Number类型

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

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

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

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

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

2501855-20221112234007573-1734880337.png

1.1.浮点值

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

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

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

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

 

2501855-20221112233825071-1715573496.png

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

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

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

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

2501855-20221112234703413-869025793.png

 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);

2501855-20221112235031210-177664891.png

有趣的是,当小数点后的零大于等于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);

2501855-20221113000244726-2035743304.png

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  可以被转化为数字一

2501855-20221113001020186-1424988610.png

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);

2501855-20221113002614937-604230902.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK