[求助] 430乘法运算错误

feiyun   2016-3-19 17:53 楼主
while(1)
{     
  // if(a==0XFF)        //显示对应频率ad值
   //{   

   //     if(f1==0)         //直流电压
   //     {
  //          i=f1;
           // LEDA(sqrt(data[i].real*data[i].real+data[i].imag*data[i].imag)/64);
  //      }
      //  else
     //   {
         //   i=f1/8;    //(1024/NUM); //对应频率的ad,有1024/NUM=8的误差
            max=0;
            for(i=0;i             {

          x[i].real=0.2;
          x[i].imag=0;
             // result[i]= ((x[i].real)*(x[i].real)+(x[i].imag)*(x[i].imag))*1.0f;
          temp=3.6;
          result[i]=(3.6*3.6);
              if(max<(result[i]))
              {
                max=result[i];
                index=i;

              }
            }

           index=(int)(max*100);

            LEDA((index));


result[i]=(3.6*3.6);这个等式这样没有问题,但是这样写result[i]=(temp*3.6);结果就是错误,一直是4左右,可能是哪方面的问题

回复评论 (4)

积分怎么获得呀
点赞  2016-3-19 21:02
现在证明把temp定义成float是错误,定义成int是正确的,不知道为啥
点赞  2016-3-19 21:05
几个类型统一成float看看,你这样描述了一半的感觉,还有你说的对不对是最后的结果,还是那个等式的结果
点赞  2016-3-21 10:48
觉得是不是溢出了,或者是没转换数据类型就直接赋值/运算了?
点赞  2016-3-21 17:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复