日期:2024年2月27日

数值(JavaScript)

计算机技术也被称为信息技术,信息也就是数据。计算机的本质也就是一个存储和操作数据的机器,数据的重要性可见一斑。

数据也是编程语言中的最根本的内容。何为数据呢?可以这么说,我们认知的所有一切,在计算机中都是以数据的形式体现的。一切皆数据,数据即一切。即使是再复杂东西,在计算机中都会被转化为各种数据。

计算机或编程语言的本质就是对现实世界的抽象。在计算机中只需要简单的数据就可以把这个复杂世界存储起来。然而即使是在复杂的数据,它的基本组成部分也是相同的。

为了能存储各种复杂数据,编程语言中会内置一些基本的数据类型。像数字、字符串、布尔值等,都可以直接使用,通过对这些数据的不同组合使用,便可完成对世间万物的抽象。

基本数据类型

基本数据类型是构成语言的基础,别看它们非常简单,但在程序的世界中所有的事物都是由这些东西构成的。常见的基本数据类型包括:数字、字符串、布尔值、空值等。在任何的编程语言中,都拥有这些数据类型,JS也不例外。那么在JS中是表示这些数据的呢?

数值(number)

在我们生活中最常见的数据就是数字了。我们的身高、体重、年龄、金钱这些东西都属于数字,甚至人长的好看不好看也可以用颜值来表示。足见数字的重要性。在JS中数字可以直接使用,你可以直接尝试在控制台中输入几个数字试验一下。

在控制台中输入数字

数字仅仅是一个数据,所以在控制台输入数字时,浏览器不会做任何操作,只是简单的将数据显示出来。你可以这样理解当我输入10以后,浏览器会自动返回一个数字10,不会做其他操作。

那么如何能知道某个数据能不能在JS中使用呢?很简单,输入数据时JS没有报错,就证明它可用,报错了就证明不能用。比如,我在命令行中输入一个十六进制1a,由于JS不支持这种格式,所以会用红字显示异常。

我输入1a,报错了

在JS中十进制的小数和整数都可以直接使用,几乎没有问题。但JS中的数字在底层都是以64位的形式存储的,所以数字并非无限大小。“位”是计算机中的单位,计算机的所有数据都是以二进制形式存储的,二进制中只包含0和1,一个0或1,在计算机中就被称为1位。64位意味着,数字在JS底层会被转化位64个0或1来存储。

存储机制本身有一些复杂,不需要过分研究,大概了解一下即可。在JS中,整数的最大范围在±九千万亿左右(9后边15个0)一旦超过这个范围将不能准确表示。

在有效范围内可以正常显示
超出范围只显示近似值

如果数字在写的大一些,会直接转化为科学计数法表示。

数字太大转化为科学计数法

至于小数,在js中只能精确表示小数点后16位,超过了16位会自动四舍五入表示。

超过16位会四舍五入

即使是非精确表示在JS中也是存在极限的,1.7976931348623157e+308是JS中可以表示的数字的最大值,最小值是5e-324。当然这里的最大最小值没有考虑符号,说的都是绝对值。

你也许会有疑问,如果超过了最大值会怎么样的,比如我让最大值在乘2会出现什么情况呢?

超过数字极限会使用±Infinity表示

当数字超过了JS中所允许的最大范围,在JS中将会使用±Infinity来表示,意味±无穷。但是此时这个数字已经没有任何的意义。不过有一点需要注意Infinity在JS中也属于一种数字,同样可以在控制台中直接使用。

和其他数字一样Infinity也可以直接使用

除了这些数字(整数、小数、Infinity、科学计数法)这些外在JS中还存在一个特殊的数字NaN,NaN意为Not a Number。

NaN也是一个数字

JS中NaN是一个很特殊的存在,用来表示非数字。一般用来表示一些错误的计算结果,比如将一个数字和字符串做乘法运算时,会返回NaN。

字符串和数字做乘法 返回NaN

总之,NaN在JS中表示错误的数字,但是从另一方面讲它也属于一种特殊的数字。

除此之外,在JS中也可以表示其他进制的数字,只是需要一些特殊的的表示方式。0b开头表示二进制数字,0o表示八进制数字,0x开头表示十六进制数字。

其他进制的数字

需要注意的是,无论使用什么进制表示数字,浏览器在显示时都会以十进制的形式显示。

大整数(bigint)

JS中能精确表示的整数是有限制的,这导致JS无法处理一些超大的整数的运算,虽然出现这种情况的机率并不十分高,但是ECMA还是提出了解决方案。

在最新版本的的JS提案中,提出了一个新的整数叫做bigint,和number不同。bigint可以用来表示无限大的整数。大整数使用起来也非常方便,只需要在数字后边个n。

大整数

有了bigint所能表示的整数是是没有大小限制的,但是只能是整数不能用来表示小数。但是bigint还没能成为正式标准,了解一下就行了。

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x