打印

430乘法运算错误

[复制链接]
511|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rangar|  楼主 | 2016-11-27 11: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<NUM/2;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左右,可能是哪方面的问题

相关帖子

沙发
Thor9| | 2016-11-27 12:00 | 只看该作者
几个类型统一成float看看,还有你说的对不对是最后的结果

使用特权

评论回复
板凳
smilingangel| | 2016-11-27 12:48 | 只看该作者
这个有其他的替代方法么?只要结果一样就Ok的哈

使用特权

评论回复
地板
Rollo| | 2016-11-27 12:53 | 只看该作者
temp定义成int试试

使用特权

评论回复
5
Bjorn| | 2016-11-27 13:06 | 只看该作者
觉得是不是溢出了,或者是没转换数据类型就直接赋值/运算了?

使用特权

评论回复
6
zhangbo1985| | 2016-11-27 16:23 | 只看该作者
要考虑乘法结果的取值范围的

使用特权

评论回复
7
baimiaocun2015| | 2016-11-27 21:37 | 只看该作者
楼主你的temp的数值及定义的类型是什么?跟定义的数据类型有关系的

使用特权

评论回复
8
皈依| | 2016-11-28 08:31 | 只看该作者
用整型测试一下 然后再浮点 是不是溢出了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

154

主题

763

帖子

0

粉丝