int型配列の要素の平均値を求める関数を書いたつもりなのですが
要素5つで値も全部5のとき
合計は24.965399
平均値は4.993080
などと値が微妙に丸められています。
キャストするとき変になったのかもしれませんが何故でしょうか。
コンパイラーはgccです。

double avg(int array[], int elements) {
double ret;
int *p = array;
while(p < &array[elements]) {
ret += (double)*p;
p++;
}
/* デバッグ用 */
printf("合計は%f\n", ret);
ret = ret / (double)elements;
return ret;
}