c # float [] среднее теряет точность
Я пытаюсь вычислить среднее значение для массива чисел с плавающей точкой. Мне нужно использовать индексы, потому что это внутри бинарного поиска, поэтому верх и низ будут двигаться. (Большая картина, которую мы пытаемся оптимизировать, оценивая половину диапазона, поэтому нам не нужно пересоздавать массив каждый проход).
Во всяком случае, я написал собственный цикл усреднения, и я получаю на 2 места меньше точности, чем метод c # Average ()
float test = input.Average();
int count = (top - bottom) + 1;//number of elements in this iteration
int pos = bottom;
float average = 0f;//working average
while (pos <= top)
{
average += input[pos];
pos++;
}
average = average / count;
пример:
0.0371166766 - c# 0.03711666 - my loop 125090.148 - c# 125090.281 - my loop