在网上很容易查到parseInt() 的定义,如下
parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt(string, radix)
string :必需。要被解析的字符串。
radix :可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,
则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或 者大于 36 ,则 parseInt() 将返回 NaN。
看了下列的例子,但是不明白为什么会是这样的结果
parseInt("11",2); //返回 3 (2+1)
看了进制的转化后才明白
二进制数据一般可写为:规律:个位上的数字的次数是0,十位上的数字的次数是1,......,
依次递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
把 11 看成两个数1 和1,因为1都小于基数2
所以结果:
1 * 21 +1 * 20 =2+1=3
如果是parseInt(“113”,2); 运行的结果也是3
因为3这个数大于2不属于2进制的数
所以 只运算前两位
1 * 21 +1 * 20 =2+1=3
如果是parseInt("311",2); 运行的结果NAN
因为第一个数3不是2进制数,所以不往后计算,
也就是说从第一个是2进制数的数开始到碰到第一个不是2进制数截止。
如果是parseInt("131",2); 运行的结果2
因为1 * 20 =1。
如果是parseInt("1113",2); 运行的结果 7
1 * 22 + 1 * 21+1 * 20 =4+2+1=7
其他进制都是这样计算。
如果是parseInt("1213",3) 运行的结果13
只计算是3进制的数,大于等于3基数的都不计算
1 * 32 + 2* 31+1 * 30 =9+6+1=16
写下来给自己做个笔记以免以后自己忘记