js数据类型-4.Number

Number数据类型使用IEEE754格式来表示整数浮点数值

为了支持各种数值类型,ECMA-262定义了不同的数值字面量格式。

  1. 十进制:最基本的数值字面量,直接在代码里输入。
var intNum=55;
  1. 八进制:在严格模式下是无效的,第一位必须是零(0),然后是八进制数字序列(0~7),如果字面值中的数值超出了范围,那么前导零将会被忽略,后面的数值被当作十进制数解析。
var octa1Num1=070;   //八进制的56
var octa1Num2=079;  //无效的八进制数------解析为79
var octa1Num3=08;    //无效的八进制数-----解析为8
  1. 十六进制:字面值的前两位必须是0x,后跟任何十六进制数字(0-9及A-F),其中,字母A-F可以大写也可以小写。
var hexNum1=0xA;      //十六进制的10
var hexNum2=0x1f;     //十六进制的31

在进行算数运算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。

浮点数

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字,小数点前面 可以没有整数,但是我们不推荐这种写法。浮点数只能用十进制数表示。

var floatNum1=1.1;    
var floatNum2=0.1;    
var floatNum1=.1;    //有效但不推荐

由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转换为整数值。例如:

var floatNum1= 1.      //小数点后没有数值---解析为1
var floatNum2=10.0      //整数,解析为10

对于极大极小的数值可以使用科学计数法,用e表示法表示的数值等于e前面的数值乘以10的e后面数值次幂。

console.log(3.14e7==31400000)   //true

浮点数只能用十进制数表示,浮点数的最高精度是17位小数,但在进行算数运算时其精确度远远不如整数。例如0.1+0.2的结果不是0.3,而是0.30000000000000004.

数值范围

由于内存的限制,ECMAScript并不能保存世界上所有的数值,所以就有了最大值和最小值:
最小值保存在Number.MIN_VALUE中,这个值是5e-324;
最大值保存在Number.MAX_VALUE中,这个值是1.7976931348623157e+308
超出该范围则会转换为Infinity或0.

console.log(Number.MAX_VALUE);//1.7976931348623157e+308
	console.log(Number.MIN_VALUE);//5e-324
	console.log(2.7976931348623157e+308)//infinity
	console.log(5e-325)//0

使用isFinite()函数判断一个数值是否有穷,若是,则返回true;

var result=Number.MAX_VALUE+Number.MAX_VALUE;
console.log(isFinite(result)); //false

数值转换

有三个函数可以把非数值转换为数值:Number(),paseInt()和parseFloat()。其中,Number可以用于任何数据类型,而另外两个函数专门用于把字符串转化成数值。

1.Number()

转换规则:
如果是Boolean值,true和false将分别转换为1和0
如果是null值,返回0
如果是undefined,返回NAN
如果是字符串,遵循以下规则:
(1)若字符串只包含十进制或十六进制数字,则转成十进制的数字
注意:Number()不识别八进制数字的字符串,会按照十进制数字处理
(2)若字符串为空字符串或空格字符串,则转成0
(3)其他情况的字符串,则转成NaN

	var num1 = Number(true);//1
	var num2 = Number(false);//0
	var num3 = Number(null);//0
	var num4 = Number(undefined);//NaN
	var num5 = Number("1.32");//1.32
	var num6 = Number(1.32);
	var num7 = Number("");//0
	var num8 = Number("hi");//NaN

2.parseInt( )

parseInt()专门用于把字符串转换成整数,在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则继续解析,直到解析完成或者遇到非数字字符.

console.log(parseInt("123blue"));//123
	console.log(parseInt(""));//NaN
	console.log(parseInt("0xA"));//10
	console.log(parseInt("123.456"));//123
	console.log(parseInt("070"));//70不解析八进制

注意:在ECMAScript5中,parseInt()已经不具备解析八进制的能力。例如"070’,会忽略前面的‘0’,得到十进制的70。为了消除在使用parseInt()函数时可能导致的上述困惑,可以为这个函数提供第二个参数:第一个参数的基底(第一个参数是什么进制?),然后parseInt()函数将第一个参数转换为十进制整数。

	console.log(parseInt("70",8));//56
	console.log(parseInt("70",16))//112
	console.log(parseInt("70",10))//70

3.parseFloat()

parseFloat( )专门用于字符串转换浮点数。同样地,解析时会忽略字符串前面的空格,直到找到第一个非空格字符,然后一直解析到字符串末尾或一个无效的浮点数字字符为止
需要注意的两点:

  1. parseFloat( )始终会忽略前导的零,所以parseFloat( )只解析十进制,且无第二个参数;
    2.parseFloat( )若遇到一个可解析为整数的数,则会返回整数。
console.log(parseFloat("123blue"));//123
console.log(parseFloat("22.5"));//22.5
console.log(parseFloat("22.5.7"));//22.5
console.log(parseFloat("022.5"));//22.5
console.log(parseFloat("25.0"));//25

NaN(非数值)

NaN即为非数值,这个数值表示一个本来要返回数值的操作数的情况,NaN具有两个特点:

  1. 任何涉及NaN的操作都会返回NaN;
  2. NaN与任何数值都不相等,包括NaN本身。
console.log(10/NaN);          //NaN
console.log(NaN == NaN);      //false

isNaN()函数用来判断参数是否”不是数值“,isNaN()在接收到一个值后,会尝试将这个值转换为数值,任何不能转换为数值的值都会返回true。

console.log(isNaN(NaN));          //true
console.log(isNaN(10));           //false
console.log(isNaN("10"));         //false
console.log(isNaN(true));         //false
console.log(isNaN(null));         //false
console.log(isNaN("blue"));       //true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值