js显示类型转换(数值类型的三种)

本文介绍了JavaScript中将其他类型转换为数值的三种方式:Number(), parseInt(), parseFloat()。详细阐述了它们的转换规则,包括对空字符串、以0开头的数字、非数字字符等情况的处理,并探讨了null和undefined转换后的特殊性。" 86316861,6818377,libcurl 使用陷阱:超时与多线程问题,"['网络编程', 'HTTP请求', 'C库', '并发处理', '错误排查']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其它类型转化为numbe分为两种形式

  • 隐式转化
  • 显示转化

这章讲其它类型转换为数值类型的三种形式Number(),parseInt(),parseFloat()。这种强制转换类型的方式也叫显示类型转换

NaN

  1. 当一个数据,非要是数值型的时候,但没有任何一个数值可以表示它的时候,就是NaN
  2. NaN永远不会等于NaN
  3. NaN和任何值做算数运算也会返回NaN

Number()

Number()作用:将其它类型的数据转为数值型,参数为js数据类型

注意:隐式转化为Number与Number函数规则一样;与parseInt,parseFloat不一致

			var res = Number('sd512');//NaN
			console.log(res)
			var res = Number('0000011111')//11111
			console.log(res)
			var res = Number(undefined)//NaN
			console.log(res)
			var res = Number(true)//1
			console.log(res)
			var res = Number('0xa')//0xs是16进制的前缀所以结果为10
			console.log(res)
			var res = Number(22.5)//22.5
			console.log(res)
			var res = Number([]);//0
			console.log(res)
			var res = Number({});//NaN
			console.log(res)
			var res = Number('');//0
			console.log(res)
			var res = Number(null);//0
			console.log(res)
			var res = Number('1.1.1');//NaN
			console.log(res)
			console.log(Number('法外狂徒张三'));//NaN

有些值的转换结果可能跟我们想的不一样,比如null和undefined做相等运算的时候是相等的,但是做转换却一个是0一个是NaN。这个是跟内存有关系的,undefined是未定义但是内存里有他的位置,而null是不仅没定义还什么都没有。内存里没它位置可不就是0嘛,所以有相同之处也有不同之处。

parseInt()转换规则

  1. 会忽略字符串前面的空格,直到找到第一个数字
  2. 如果第一个不是数字或者是符号则返回NaN
  3. 空字符串,返回NaN
  4. 如果第一个字符是数字或者是符号,则会继续解析第二个字符是不是数字,如果是则会继续向后解析直到不是或者结束为止
  5. 以0开头的数字字符串省略0,返回其它数字字符串
  6. 以0开头的字符,省略0,除非下一位是非数字字符;返回0;
			var tast = '1a2s3d4'//结果为1
			console.log(parseInt(tast))
			var tast = '';//结果为NaN
			console.log(parseInt(tast))
			var tast = true;//结果为NaN
			console.log(parseInt(tast))
			var tast = '     123BSA';//123
			console.log(parseInt(tast))
			var tast = '000070';//70
			console.log(parseInt(tast))
			var tast = '0A2'//0
			console.log(parseInt(tast))
			var tast = '1.1.1';//1
			console.log(parseInt(tast))
			var tast = 1.1;//1
			console.log(parseInt(tast))
			var tast = [123];//123
			console.log(parseInt(tast))
			var tast = [];//NaN
			console.log(parseInt(tast))
			var tast = null;//NaN
			console.log(parseInt(tast))
			var tast = undefined;//NaN
			console.log(parseInt(tast))
			var tast = {name:'zhangsan'};//NaN
			console.log(parseInt(tast))
			var tast = {};//NaN
			console.log(parseInt(tast))

这个转换方法更像是先转换为字符串然后看里面内容是什么再按照规则转化

parseFloat转换规则

parseFloat() 将js数值转为浮点数

  • parseInt 只看第一个字符,满足才继续解析
  • parseFloat 从头到尾的解析;最后返回一个结果;该结果遵循以下规律
    1. 空字符 NaN
    2. 十六进制 0
    3. 解析为第一个有效小数点
    4. 普通的非空字符 非数字NaN
    5. 科学计数法字符,转为科学计数法
    6. 0开头字符 如果继续解析后面字符非数字则返回0,是数字 省略0 返回有效数字
			var res = parseFloat('0xf')//0
			console.log(res)
			var res = parseFloat('0aaa')//0
			console.log(res)
			var res = parseFloat('0..1')//0
			console.log(res)
			var res = parseFloat('0.1.1')//0.1
			console.log(res)
			var res = parseFloat('.1.1')//0.1
			console.log(res)
			var res = parseFloat(true)//NaN
			console.log(res)

这里跟parseInt有异曲同工之妙true,undefined,[],{},都是NaN

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值