我想知道为什么我尝试使用多种数据类型(float、double long double 等)得到负值,但结果是 .. 或其负数或零或 NA。这是一个检查商店中顾客的中等服务时间的功能,我只发布了问题代码的相关部分。提前告诉你
struct timeval timecount[MAX_COSTUMERS+1][2];
long double getMedium(struct timeval x[][2]){
long double diff;
int i;
for(i=1;i<k.clientID;i++){
diff+= ((x[i][1].tv_usec )*0.0000001 - (x[i][0].tv_usec)*0.0000001) ) ;
}
return diff;
}
void AFUNCTION(){ // Called a bunch of times
k.clientID++;
gettimeofday(&timecount[k.clientID][0], NULL);
// DO A BUNCH OF STUFF
gettimeofday(&timecount[k.clientID][1], NULL);
}
void main ( ) {
long double aux;
aux=getMedia(timecount);
printf("%LG \n",aux);
}
最佳答案
问题是你没有将 dif 初始化为 0。那里有垃圾数据......
double getMedium(struct timeval x[][2]){
double diff =0;
int i;
for(i=1;i<k.clientID;i++){
diff+= ((x[i][1].tv_usec )*0.0000001 - (x[i][0].tv_usec)*0.0000001) ) ;
}
return diff;
}
关于c - 带时间计数的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528737/