js显示类型转换(数值类型的三种)
程序员文章站
2022-06-28 19:01:37
其它类型转化为numbe分为两种形式隐式转化显示转化这章讲其它类型转换为数值类型的三种形式Number(),parseInt(),parseFloat()。这种强制转换类型的方式也叫显示类型转换NaN当一个数据,非要是数值型的时候,但没有任何一个数值可以表示它的时候,就是NaNNaN永远不会等于NaNNaN和任何值做算数运算也会返回NaNNumber()Number()作用:将其它类型的数据转为数值型,参数为js数据类型注意:隐式转化为Number与Number函数规则一样...
其它类型转化为numbe分为两种形式
- 隐式转化
- 显示转化
这章讲其它类型转换为数值类型的三种形式Number(),parseInt(),parseFloat()。这种强制转换类型的方式也叫显示类型转换
NaN
- 当一个数据,非要是数值型的时候,但没有任何一个数值可以表示它的时候,就是
NaN
-
NaN
永远不会等于NaN
-
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()
转换规则
- 会忽略字符串前面的空格,直到找到第一个数字
- 如果第一个不是数字或者是符号则返回NaN
- 空字符串,返回NaN
- 如果第一个字符是数字或者是符号,则会继续解析第二个字符是不是数字,如果是则会继续向后解析直到不是或者结束为止
- 以0开头的数字字符串省略0,返回其它数字字符串
- 以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 从头到尾的解析;最后返回一个结果;该结果遵循以下规律
- 空字符 NaN
- 十六进制 0
- 解析为第一个有效小数点
- 普通的非空字符 非数字NaN
- 科学计数法字符,转为科学计数法
- 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
本文地址:https://blog.csdn.net/blc_God/article/details/110204730