首页 新闻 会员 周边

Javascript代码的小小疑问(7)

0
[已解决问题] 解决于 2015-06-03 21:17

var n = parseInt("100",8); alert(n);  //结果位:64

 

这个 parseInt()函数是怎么计算的?

Coca-code的主页 Coca-code | 初学一级 | 园豆:10
提问于:2015-06-03 15:43
< >
分享
最佳答案
0
var s="100";
var pow=8;
var r=0;
for(var i=0;i<s.length;i++){
  r=Number(s.charAt(i))+r*pow
}
console.log(r);
奖励园豆:5
xmodygetz | 小虾三级 |园豆:575 | 2015-06-03 16:11

就是这个逻辑,但是想知道64的组成,

Coca-code | 园豆:10 (初学一级) | 2015-06-03 16:35

@殷敏峰: 什么组成,8进制的100转换不就是10进制的64么?

浅草青晨 | 园豆:904 (小虾三级) | 2015-06-03 17:13

@殷敏峰: 8的二次方乘以1

进制表示法的实质就是用幂指数来表示数字。

比如八进制的100;

个位 0*8^0

十位 0*8^1

百位 1*8^2

累加得64

xmodygetz | 园豆:575 (小虾三级) | 2015-06-03 17:17
其他回答(4)
0

http://www.w3school.com.cn/jsref/jsref_parseInt.asp

parseInt("10");            //返回 10
parseInt("19",10);        //返回 19 (10+9)
parseInt("11",2);        //返回 3 (2+1)
parseInt("17",8);        //返回 15 (8+7)
parseInt("1f",16);        //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8
Echo.Liu | 园豆:385 (菜鸟二级) | 2015-06-03 15:48

那64是怎么来的?8+7+6+5.。。?

支持(0) 反对(0) Coca-code | 园豆:10 (初学一级) | 2015-06-03 15:59

@殷敏峰: 正常情况的数值下就是进制转换。

支持(0) 反对(0) Echo.Liu | 园豆:385 (菜鸟二级) | 2015-06-03 16:17

@殷敏峰: 108.109 不可能是8进制的数值,所以应该是异常的。但是为什么显示8就不清楚了。

支持(0) 反对(0) Echo.Liu | 园豆:385 (菜鸟二级) | 2015-06-03 16:20

@Mr.LiuP: 因为8跟9不是8进制的有效数字,所以只会读入10,8进制的10就是10进制的8,所以结果为8

支持(0) 反对(0) 浅草青晨 | 园豆:904 (小虾三级) | 2015-06-03 17:05

@浅草青晨: 原来如此。

支持(0) 反对(0) Echo.Liu | 园豆:385 (菜鸟二级) | 2015-06-03 17:05
0

前面一个为值,后面一个参数为进制

浅草青晨 | 园豆:904 (小虾三级) | 2015-06-03 15:59
0

将 100 的八进制 转换为十进制 就是 64

让代码飞 | 园豆:112 (初学一级) | 2015-06-03 16:03
0

2楼真相

秋壶冰月 | 园豆:5903 (大侠五级) | 2015-06-03 16:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册