参数
string
如果不是字符串->toString(开头的空白忽略)
Radix (2-36)
解析一个字符串(string)并返回指定基数(Radix)的十进制整数。
- Radix 2-36 之间的整数,要解析成整数的字符串是多少进制 -> 进制数 -> 十进制整数
- e.g. 参数为 16 :要解析的整数的字符串是16进制数
1 2
| console.log(parseInt('10', 2));
|
默认值不是10进制
0x、0X开头,默认16进制
1 2
| console.log(parseInt('0x629eb', 16)); console.log(parseInt('0x629eb'));
|
0开头,可能是8进制、可能是10进制(ES5规范是10进制)需要写清楚radix,因为8进制需要补零
其他开头,都是10进制
返回值
成功 - 能解析的返回的整数
1
| console.log(parseInt('1a03d', 16));
|
忽略字符串开头的空格
1
| console.log(parseInt(' 10', 3));
|
从不符合该进制要求的数字开始,忽略后续所有的字符
1 2
| console.log(parseInt('123', 2)); console.log(parseInt('113', 2));
|
支持正负号 +/-
1
| console.log(parseInt('-1 13', 2));
|
💄失败 - 返回 NaN
radix 小于2或者大于36
1 2
| console.log(parseInt('13', 1)); console.log(parseInt('13', 48));
|
未填写任何参数
1
| console.log(parseInt());
|
字符串第一个字符不能被正常转换数字的情况(第一个字符是数字也能转,转到第一个字符不是数字为止)
1 2 3
| console.log(parseInt('a1')); console.log(parseInt('1a1')); console.log(parseInt('11a'));
|
转十进制的算法
1 2 3 4 5 6 7
| console.log(parseInt('123', 5));
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| console.log(parseInt('0x629eb', 16));
b(11) * 16 ^ 0 = 11 e(14) * 16 ^ 1 = 224 9 * 16 ^ 2 = 2304 2 * 16 ^ 3 = 8192 6 * 16 ^ 4 = 393216
= 403947
|
toString - 数字转化为相应进制的字符串数字
出来的是字符串
1 2
| console.log((3).toString(2));
|
严格检测是否是整型
1 2 3 4 5 6
| var filterInt = function(string) { if (/^(\-|\+)?([0-9]+|Infinity)$/.test(string)) { return Number(string); } return NaN; }
|