js中parseInt,parseFloat

http://www.51as.com/js/parseInt.html

 

parseInt 与 parseFloat 是把字符串转换成整数和浮点数,但他们只检查字符串的前缀,也就是说字符串后部含有非数字字符也是可以转换的。语法为:

parseFloat(numString)

下表列出了 numString 为不同值时的情况,具有参考价值:

 

numStringparseInt(numString)parseFloat(numString)
零长度字符串NaNNaN
nullNaNNaN
undefinedNaNNaN
.3NaN0.3
-.3NaN-0.3
-3-3-3
3e7 3 30000000
0xFF 255 0
0x3e7 999 0
08 0 8
333
123abc123123

上述中,numString 中的字母大小写结果相同(null 和 undefined 不算)。

NaN 表示不是一个数字(Not a Number),要特别注意 3e7 和 09 这一项,结果比较出乎人意料。

可以看出

  • parseInt 认识十六进制和八进制,但不认识科学计数法。
  • parseFloat 认识科学计数法,但不认识十六进制和八进制。

3e7 为科学计数法,parseInt 不认识,所以只取了前缀 3,而 parseFloat 则跟了 7 个零。有人说会不会是 3e7 溢出了所以 parseInt 认不到呢?不是的,因为 parseInt("3e1") 仍然是 3,而不是 30。

0xFF 为十六进制,parseInt 认识,但 parseFloat 不认识。

0x3e7 也是十六进制,这里 3e7 不是科学计数法,e 是十六进制中的一个符号。

08 是以 0 开头,在 parseInt 中被当作八进制,八进制里面没有 8 这个数字,所以 parseInt("08")(注意引号括起来的)结果就是 0 了,相应地 parseInt("010") 结果就是 8 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值