关于js中的parseInt(),Number(),toString()用法

      这次,有朋友提出了一个问题,为什么parseInt("a",b)中a必须小于b,由于这个函数我不太常用,所以刚拿到这个问题我的第一反应是这应该是把a转化为b进制吧,怎么还有大小限制,如果这样,那么a必须小于b这个函数就没有存在的必要了,

      经过知识了解。感觉js中进制转化是容易搞懂又容易再次混淆的问题。

parseInt("a",b)是将“a”字符串(如果第一个值不为字符串就先转变为字符串)转化为数字,然后将b进制的数字a转化为10进制数值并返回结果。

 

其他使用方法:

1.基本用法(只接受一个参数,可以当做第二个参数默认是10)

     parseInt的返回值只有两种可能,不是一个十进制整数,就是NaN。

a.将字符串转为整数。parseInt('123') // 123

b.如果字符串头部有空格,空格会被自动去除。parseInt('   81') // 81

c.如果parseInt的参数不是字符串,则会先转为字符串再转换。

d.字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。

e.如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。

f.如果字符串以0x或0X开头,parseInt会将其按照十六进制数解析。parseInt('0x10') // 16

g.如果字符串以0开头,将其按照10进制解析。parseInt('011') // 11

h.如果参数以0开头,但不是字符串,则会先将数值转成字符串,然后解析,见规则c  parseInt(011) // 9

i.对于那些会自动转为科学计数法的数字,parseInt会将科学计数法的表示方法视为字符串,因此导致一些奇怪的结果。

parseInt(1000000000000000000000.5) // 1
// 等同于
parseInt('1e+21') // 1

parseInt(0.0000008) // 8
// 等同于
parseInt('8e-7') // 8

 

Number()这个函数其实是将括号中内容尝试转变为number类型数值的,与进制转化没有任何关系。

 

toString()才是进制转换,将数字转换为2到36之间的进制。

测试如下:

                        var a =parseInt(7,16);  //7
			var b =parseInt("17",8);  //15
			var c =Number("6");   //6
			var x =(18).toString(36);   //i

此外,看到有博主问这个:

上面parseInt()竟然其他使用用法d可以解决,第一题,1/0为Infinity,刚好19进制中的字符I为18,而n不认识,此时返回18.

值得注意的是

console.log(parseInt) ;   // function parseInt(){}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值