js各种数据类型转换.docx
《js各种数据类型转换.docx》由会员分享,可在线阅读,更多相关《js各种数据类型转换.docx(10页珍藏版)》请在冰豆网上搜索。
js各种数据类型转换
说起Number,应该是ECMAScript中最令人关注的数据类型了,遵循IEEE754格式,最基本的声明如下:
viewsource
print?
1
varintNum=34;//整数
2
vara=070;//若数值起始为0,JS尝试解析为8进制数字
3
varb=079;//八进制解析失败,解析为十进制,返回79
4
varc=08;//八进制解析再次失败,返回8
5
vard=0xA;//若其实为0x或者0X,则尝试解析为十六进制
6
vare=0x1f;//同上,并且ABCDEF不区分大小写
1、浮点数值
浮点数值的声明有两种方法
1
vara=34.34
2
varb=.34//不推荐
碰到比较大或者比较小的数值可以用科学记数法来表示
1
varas=342343.34e9;//表示342343.34乘以10的9次方
但是,浮点数值的最高精度是17位小数,但在进行算术计算时其精度就远远不如整数,所以会出现如下情况
因此,永远不要测试特定的浮点数的值,比如:
1
functionfn(a,b){
2
returna+b;
3
}
4
5
console.log('今天花了'+(1.2+122.6)+'元');//不可靠
6
7
//那怎么办呢,凉拌!
!
8
9
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:
notanumber意思为不是一个数字,它最特殊的地方就是“任何值都与它不相等,甚至于它自己”
再看:
是的,0/0在JS中没有报错,得到NaN,2/0更不会报错,得到一个Infinity!
!
!
!
但是,我们有个牛逼函数,isNaN,这个函数判断一个数值是不是不是一个数字(很绕吧)
毁三观了?
其实很好理解嘛,1是个数字,所以他isanumber而非notanumber
空字符串可以转换为0,所以也notnotanumber
'fdsaf'不可转换为数字,所以notanumberistrue!
!
!
NaN本来就不是一个数字,理所应当了
'12'可以转换为数字,所以返回false
true与false可转换为1和0,所以也是false啦
4、数值转换
有3个函数可以把非数值转换为数值:
Number()、parseInt()、parseFloat()。
但是,Number在转换的时候比较复杂,并且不合理,所以,请优先选择parseInt和parseFloat
由于我们大部分情况下都是用十进制来转换,因此始终将10作为第二个参数是非常有必要的!
parseFloat比parseInt的不同也就是能转换浮点数,此处不再罗嗦
5、Number内置函数
先看toString,它可以传入一个参数,告诉返回的是几进制
toFixed():
按照小数位来显示数值
toExponential():
指数表示法,接收一个参数,返回的小数个数
toPrecision():
返回合适的格式
6、Math对象
Math中有N多常量与好用的数值方法,请自行API之!
关于JS中的Number,还没完,敬请期待!