A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. for (int i = 0;i<7;i++){
  2.     arr[i]=(int)((key/Math.pow(10,(7-i))) % 10);  // 此处报错 必须强转以后才能编译通过
  3. }
复制代码

请问为什么这里要强转才能编译通过,下面这个例子就不需要强转,为什么?
  1. int index = 0,num=key;
  2.                 while(num>0){       
  3.                         arr[index] = num%10;
  4.                         index++;
  5.                         num=num/10;
  6.                 }
复制代码

7 个回复

倒序浏览
第一个因为%前面的那表达式结果不是int类型的,你改成
  1. for (int i = 0;i<7;i++){
  2.                     arr[i]=((int)(key/Math.pow(10,(7-i))) % 10);  // 此处报错 必须强转以后才能编译通过
  3.                 }
复制代码

就可以了
回复 使用道具 举报
还是不太懂。。
回复 使用道具 举报
static double pow(double a, double b);  
math.pow 的返回值是double 类型,所以,需要强转成int类型
回复 使用道具 举报
{:3_46:}{:3_46:}{:3_46:}
回复 使用道具 举报
大自然的搬运工 发表于 2015-10-31 18:17
static double pow(double a, double b);  
math.pow 的返回值是double 类型,所以,需要强转成int类型 ...

噢 我以为返回值是int呢。。原来如此
回复 使用道具 举报
momoxixi 发表于 2015-11-1 13:39
噢 我以为返回值是int呢。。原来如此

。。。。。。
回复 使用道具 举报
zlg 中级黑马 2015-11-1 13:50:35
8#
大神好多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马