目录
对于JS的数据类型,可以分为基本数据类型和引用数据类型两大板块,那么基本数据类型呢又可以细分为number(数字类型)、string(字符串类型)、null(空对象指针类型)、undefined(定义未被赋值类型)、symbol类型、Boolean(布尔类型)。引用数据类型就是object类型。作为基本数据类型,今天我们就一起来探究一下number!!
揉揉脑袋,到底number是怎样的呢?
Number类型,即数值类型, 包含:整数型、浮点型、NaN(not a number)和Infinity(正负无穷大)
首先,该如何定义一个整型数值呢?
首先用var定义一个数值为18的变量age,用console.log在控制台打印输出age所赋予的值18,也可以用console.log(typeof age)查看age的数据类型。
注意:
var后面都是自己定义的变量名(可以是你写的任何东西,全靠自己心情)
typeof和变量名字之间一定要有空格,或者用(将变量名包裹起来)===》console.log(typeof(age))
那么,在浏览器控制台就会出现这种效果:
18就是age的整数值,number就是age的数据类型。
浮点数类型又该如何定义呢
看到这个标题有没有懵了呢?什么是浮点数呢?好了好了,不整那些高大上的了,浮点数就是我们通常说的小数。有了整数型,那指定少不了小数型的wa:
怎么样,是不是和整数型的差不多?实质都是一样的,无非就是多了个小数点。那么,问题来喽:如果把12.8改为12.08会怎么样呢?12.80又会怎样呢?
首先,别的不需要去动,我们只需要修改一下 = 后的数值就行。结果如下:
这是12.08的
咋样,相信自己的判断,就是12.08
这是12.80的:
嘿嘿,有没有料到呢,没错就是自动把末尾没有意义的0去掉了!
注意:会自动把末尾没有意义的0去掉!
但是呢,牵扯到小数,就会出现小数相加精度不准确的例子,例如0.1+0.2,按照我们学的数学运算,0.1+0.2是不是0.3?但是这里呢,就出现了像这样的情况:
这就是精度不准确出现的误差,也不是每个小数都会出现这种情况,但是当我们遇到了该怎样处理呢?
首先第一种:
使用toFixed保留小数,toFixed(括号里是几,就会保留几位小数,并进行四舍五入)
结果如下:
有没有发现,这里的字体颜色不一样了,由蓝色变成了黑色,这是为什么呢?
注意看前几张图片,蓝色的字下面跟的是什么数据类型?
是number数据类型,而这个黑色的数字前是string数据类型,所以他们的数据类型是不一样的,toFixed返回的数据类型是字符串类型。那么又该如何把数据类型转回number类型呢?
只需要重新定义一个变量,再用parseFloat进行转换即可。
让我想想,你大概是要问parseFloat是什么?/
parseFloat是一个可以将字符串类型转化为number类型的工具,具体使用方法如上图所示。
这第一种是一个比较粗暴的解决方法。
第二种解决方法:
将两个小数先换成整数,再进行整数运算,最后再将得出来的整数除以小数位(就是有一位小数除以10,两位小数就除以100,以此类推,你懂得哈)
NaN类型又是什么?
NaN全称: NOT A NUMBER。
我们可以通过isNaN()函数来判断某个变量是否为NaN,例如:如果value是NaN,则isNaN(value)返回的结果是true;如果value不是NaN,则isNaN(value)返回的结果是false。(有点绕,自己思考一下吧)
就像这样,如果输出的是一个数字,那么在第四行就会输出一个false。
别急别急,它为什么是111而不是111a呢?这就是他的运算规则。就比如111abc经过parseFloat运算就会变为number类型的111,他会自动把数字后面的字母忽略,11a2bc呢?===》11,abc123呢===》NaN,因为它开头是英文字母,不是数字,所以parseFloat判定它不能转化为数字类型,就会输出一个NaN。
Infinity(正负无穷大)
Infinity表示正无穷大
-infinity表示负无穷大
输出结果就是这样:
这个还是比较简单的吼~
恭喜你,学会了number的所有类型了,自己去动手试试看叭!
整理一篇不容易,我要去放松一下,下一篇见!