He calculado los primeros 20 elementos de la serie -suma de la serie usando flotador
en 2 formas, 1ª - hacia delante, hacia atrás - 2do. Para esto lo hice -
#include <iostream>
#include <math.h>
using namespace std;
float sumSeriesForward(int elementCount) {
float sum = 0;
for (int i = 0; i < elementCount; ++i) {
sum += (float) 1/(pow(3, i));
}
return sum;
}
float sumSeriesBack(int elementCount) {
float sum = 0;
for (int i = (elementCount - 1); i >= 0; --i) {
sum += (float) 1/(pow(3, i));
}
return sum;
}
int main() {
cout.precision(30);
cout << "sum 20 first elements - forward: " << sumSeriesForward(20) << endl;
cout << "sum 20 first elements - back: " << sumSeriesBack(20) << endl;
}
Y tengo -
sum 20 first elements - forward: 1.5000001192092896
sum 20 first elements - back: 1.5
Por favor alguien puede explicar por qué es la diferencia entre las 2 formas?
Es más o menos básico [Lo que todo científico de la computación necesita saber sobre la aritmética de coma flotante] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) material. –
Al sumar una serie de números usando coma flotante, siempre suma los números más pequeños primero - Punto flotante básico 101 - lo aprendí hace 40 años. –
@HotLicks: ¿te refieres a que proporciona una mayor precisión? – URL87