出於某種原因平均值,我得到一個非常怪異的負nuber作爲我的平均對我的節目,這裏是我的代碼:找到陣列
int sum, avg;
int size;
size = sizeof(array)/sizeof(array[0]);
sum = 0;
avg = 0;
for(int i = 0; i < size; i++){
sum += array[i];
}
avg = sum/size
我的輸出是:+ -6.84941e 061
出於某種原因平均值,我得到一個非常怪異的負nuber作爲我的平均對我的節目,這裏是我的代碼:找到陣列
int sum, avg;
int size;
size = sizeof(array)/sizeof(array[0]);
sum = 0;
avg = 0;
for(int i = 0; i < size; i++){
sum += array[i];
}
avg = sum/size
我的輸出是:+ -6.84941e 061
for(int i = 1; i < size; i++){
//^^should be 0
sum += array[i];
}
avg = sum/size; //pay attention to truncation when doing integer division
你應該注意截斷時鴻溝整數。例如,整數除法中的10/20 = 0
。 與此同時,您需要在計算總和時從0開始。
您的代碼應該如下所示:
//the average may not necessarily be integer
float avg = 0.0; //or double for higher precision
for (int i = 0; i < size; ++i)
{
sum += array[i];
}
avg = ((float)sum)/size; //or cast sum to double before division
謝謝,只是注意到,但那並沒有解決它... – user12074577
那麼雙?因爲那是我正在使用的。 – user12074577
@ user12074577看到我更新的帖子? – taocp
@ 0x499602D2雙 – user12074577
'的std :: accumulate'和部門將做到這一點,而不需要編寫自己的循環。 – chris
向我們展示如何聲明你的數組以及它的內容是什麼。 – 0x499602D2