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);


                                       
                        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
Fighting_Tao
1楼-- · 2019-07-21 03:57
没有初始化吧上面
心平气和
2楼-- · 2019-07-21 05:06
 精彩回答 2  元偷偷看……
zdfwyh
3楼-- · 2019-07-21 07:00
可能你的输入数组x[]有问题,这里看不出来
心平气和
4楼-- · 2019-07-21 12:45
zdfwyh 发表于 2016-5-15 15:01
可能你的输入数组x[]有问题,这里看不出来

我试过,出现问题的那组数据的输入,我打印出来看过,应该是没问题的
zdfwyh
5楼-- · 2019-07-21 17:46
有个问题sum初始值是多少?你没有初始化,可能第一次是0.
你的sum声明是static的,这意味着每次执行该函数,sum就会一直以上次计算的值作为初始值累加下去,如果x[]一直都是正数,早晚会溢出的,即达到极限,然后结果就是不可以测的.
心平气和
6楼-- · 2019-07-21 22:01
zdfwyh 发表于 2016-5-15 16:09
有个问题sum初始值是多少?你没有初始化,可能第一次是0.
你的sum声明是static的,这意味着每次执行该函数,su ...

上面有人提到了,我加了初始化之后还是会出现那个问题

一周热门 更多>