float型数据在运算过程中出现问题,新人一枚,求各位大神助攻

2019-07-20 22:11发布

输入一个单精度浮点型的数组,在循环10次之后求平均然后输出,但是在不断运算的过程中不知道为什么会出现平均值等于-340282366920938480000000000000000000000.000000,往上找的过程中也发现 数值的总和也是-340282366920938480000000000000000000000.000000,但是输入有没问题。网上查了一下,float型的数据的范围为:-2^128~2^128,刚好是这个数,这是什么原因,怎么解决这个问题啊!!!

void account(float32_t x[])                       
{
                        uint32_t i;
                        float32_t nd;
                        float32_t LAT;                               
                        static float32_t sum;
                       
                        for(i=0;i<4800;i++)               
                        {
                                       
                                        sum+=x[i];
                        }
               
                        n++;
                       
                        if(n>=10)                                               
                        {
                                        n=0;
                                        LAT=sum/48000;                       
                                        if(fabs(LAT)==340282366920938480000000000000000000000.000000)
                                        {
                                                                printf("  %f",LAT);
                                                                printf("  %f",sum);
                                                                printf("  %f",x[4799]);
                                                                STM_EVAL_LEDOn(LED6);
                                               
                                                                while(1);
                                        }
                                        nd=powf(10,(LAT-85)/10)/288;               
                                        ND+=nd;
                                        sum=0;
                                printf("  %f",LAT);
                                printf("  %f",ND);


                                       
                        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。