Javascript|数据类型|Number(),parseInt(),parseFloat()

Number()

● 如果是数字,遵循对应进制数据格式,统一转换为十进制并返回
● Boolean,ture返回1,false返回0
● null,则返回0
● undefined,则返回NAN
● 字符串遵循以下规则
○ 只包含数字,则直接转换成十进制;如果前面有0,则会直接忽略这个0
○ 如果是有效浮点数形式,则会直接转换成对应的浮点数,小数点前的0只保留一个
○ 如果是有效的十六进制形式,则会转换成对应的十进制数值
○ 如果是有效的八进制形式,则不会按照八进制转换,前置的0会被忽略,按照十进制转换并输出
○ 如果字符串为空,即字符串不包含任何字符,或者连续多个空格,则会转换成0
○ 如果包含任何不是以上5种情况的其他格式内容,则会返回NAN
○ 如果是对象类型,则会先掉用valueOf(),判断返回值是否能转换为Number类型,如果不满足则调用对象的toString()函数,判断返回值是否能转换为Number类型,如果不满足,则返回NAN
■ 如valueOf()和toString()返回的对象类型而无法转换成基本数据类型,则会抛出类型转换异常

parseInt(string,radix)

● 如string无法转换成Number类型,则会返回NAN
● 在使用parseInt()函数将字符串转换成整数时,需要注意以下5点
○ 非字符串类型转换成字符串类型,即使是整型数据
○ 数据截取的前置匹配原则
■ parseInt(“fg123”,16) //15
● g超出十六进制范围,所以从g开始的字符全部舍弃,返回15
■ parseInt(“0x12”,16) //116+2=18
■ parseInt(0x12,16) //1
16+2=18 116+8=24
parseInt(“0x12”,10) //0
● x不符合十进制规则,所以从x开始的字符全部丢弃,返回0
■ 对于e,处理同上
○ parseInt(15
3,10) //45 先运算再执行
parseInt(“15*3”,10) //15 当作字符串处理
○ 使用浮点型数,直接取整

parseFloat() 没有进制概念

● 如遇到(+/-),0-9,(e/E)以外的字符,则忽略该自负开始到结束的所有字符(+/-必须出现在第一位,且不能连续出现)
● 字符串前面多空白符直接忽略,如果第一个字符就无法解析,则会直接返回NAN
● 合理适应科学运算符e,今幸运暖后会转换成浮点数
● 对于小数点,只能正确匹配第一个,第二个小数点是无效的,他后面的字符也将都被忽略
总结
● Number()转换的是传入整个值,parseInt()和parseFloat()会从首位开始匹配符合的条件。
● parseFloat()匹配第一个小数点当作有效字符,parseInt()匹配到小数点直接停止
● parseFloat()没有进制概念,parseInt()转换依赖于传入的进制做数值转换

//map和parseInt的用法
var arr=['1','2','3','4']
//错误
arr.map(function(val,index){
	return parseInt(val,index)
})
//正确
var result=arr.map(function(val){
  return parseInt(val,10)
})
console.log(result)
//总结:parseInt(值,进制)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值