parseInt

语法

parseInt(string, radix)

参数

string
要被解析的值。如果参数不是一个字符串,则将其转换为字符串

radix 可选
从 2 到 36,代表该进位系统的数字。例如说指定 10 就等于指定十进位。请注意,通常预设值不是 10 进位!

返回值
返回解析后的整数值。 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。
注意:radix参数为n 将会把第一个参数看作是一个数的n进制表示,而返回的值则是十进制的。
例如:

parseInt('123', 5) // 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38

描述
parseInt 函数将其第一个参数转换为字符串,解析它,并返回一个整数或NaN。如果不是NaN,返回的值将是作为指定基数(基数)中的数字的第一个参数的整数。

例如:radix参数为10 将会把第一个参数看作是一个数的十进制表示,8 对应八进制,16 对应十六进制,等等。基数大于 10 时,用字母表中的字母来表示大于 9 的数字。例如十六进制中,使用 A 到 F。

parseInt('101', 2); // 1*2^2 + 0*2^1 + 1*2^0 = 4 + 0 + 1 = 5
parseInt('276', 8); // 2*8^2 + 7*8^1 + 6*8^0 = 128 + 56 + 6 = 190
parseInt('AF', 16); // 10*16^1 + 15*16^0 = 160 + 15 = 175

如果parseInt的字符不是指定基数中的数字,则忽略该字符和所有后续字符,并返回解析到该点的整数值。parseInt将数字截断为整数值。

parseInt('101.9', 2); // . 不是指定基数中的数字,所以截取掉 .9 等同于 parseInt('101', 2)
parseInt('276.1', 8); // . 不是指定基数中的数字,所以截取掉 .1 等同于 parseInt('276', 8)

那么,当一些数中包含e字符(例如6.022e23),使用parseInt去截取包含e字符数值部分会造成难以预料的结果。例如:

parseInt("6.022e23", 10); // 返回 6,.不是指定基数中的数字,所以截取掉 .022e23
parseInt(6.022e2, 10);  // 返回 602,先将科学技术转换成正常的数字,602.2,相当于parseInt(602.2),.不是指定基数中的数字,所以截取掉.2,最终结果为602

所以,parseInt不应该作为Math.floor()的替代品。为什么?

Math.floor('6.022e23'); // 6.022e+23
Math.floor(6.022e2); // 602

在基数为undefined,或者基数为0或者没有指定的情况下,JavaScript作如下处理:

  • 如果字符串string以"0x"或者"0X"开头,则基数是16(16进制)
  parseInt(0x1F5); // === parseInt('1F5', 16) => 1*16^2 + 15*16^1 + 5*16^0 = 256 + 240 + 5 = 501
  • 如果字符串string以"0"开头,则基数是8(8进制)或者是10(10进制),那么具体是哪个基数由实现环境决定。ECMAScript3不赞成使用8进制,ECMAScript5规定使用10进制,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。
  • 如果字符串string以其它任何值开头,则基数是10(10进制)。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值