核心JavaScript(一):数据类型与变量之Number初探

限于喜欢 提交于 2020-03-01 09:44:19

说起Number,应该是ECMAScript中最令人关注的数据类型了,遵循IEEE754格式,最基本的声明如下:


var intNum = 34;  //整数
var a = 070;      //若数值起始为0,JS尝试解析为8进制数字
var b = 079;      //八进制解析失败,解析为十进制,返回79
var c = 08;       //八进制解析再次失败,返回8
var d = 0xA;      //若其实为0x或者0X,则尝试解析为十六进制
var e = 0x1f;     //同上,并且ABCDEF不区分大小写
1、浮点数值


浮点数值的声明有两种方法


var a = 34.34
var b = .34  //不推荐
碰到比较大或者比较小的数值可以用科学记数法来表示


var as = 342343.34e9; //表示342343.34乘以10的9次方
但是,浮点数值的最高精度是17位小数,但在进行算术计算时其精度就远远不如整数,所以会出现如下情况

因此,永远不要测试特定的浮点数的值,比如:

function fn(a,b) {
    return a + b;
}

console.log('今天花了' + (1.2 + 122.6) + '元'); //不可靠

//那怎么办呢,凉拌!!

console.log('今天花了' + (1.2 * 100 + 122.6 * 100) / 100 + '元'); //凑合
2、数值范围

JS能容忍的最大数值在Number对象中已经明确给出:

Number.MAX_VALUE

Number.MIN_VALUE

如果计算出来的值大于这个maxvalue,则返回Infinity值,同理如果小于,则是-Infinity,其实Number.NEGATIVE_INFINITY与POSITIVE_INFINITY也分别保存着这两个值

如果想要判断某个数值是否在最大值与最小值之间呢?isFinite()!!

3、NaN

先看如下有趣的测试:

Infinity + Infinity = NaN

NaN : not a number 意思为不是一个数字,它最特殊的地方就是“任何值都与它不相等,甚至于它自己

再看:,是的,0/0 在JS中没有报错,得到NaN,2/0更不会报错,得到一个Infinity!!!!

但是,我们有个牛逼函数,isNaN,这个函数判断一个数值是不是不是一个数字(很绕吧)

毁三观了?其实很好理解嘛,1是个数字,所以他is a number 而非 not a number

空字符串可以转换为0,所以也not not a number

'fdsaf'不可转换为数字,所以not a number is true !!!

NaN本来就不是一个数字,理所应当了

'12'可以转换为数字,所以返回false

true与false可转换为1和0,所以也是false啦

后续为数值转换、Number内置函数、Math对象,欢迎拍砖!



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!