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

说起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对象,欢迎拍砖!



转载于:https://my.oschina.net/hhstuhackey/blog/117430

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值