0

Revisando varias paginas me doy cuenta que los decimales del numero de euler varian un poco, pero en general mas o menos es 2.7182815255 .... realice un programa y pues es bastante exacto pero los decimales no son totalmente iguales, coincidiendo solamente con los primeros 6, deseo saber si este es un error de la maquina o un error en mis algoritmo.

#include<stdio.h>

float function_e_serie(int *amount, float *e_serie);

int main(){
  int amount;
  float e_serie;

  printf("Insert the number of numbers in the series: ");
  scanf("%i",&amount);

  function_e_serie(&amount,&e_serie);

  printf("\n%.18f\n\n",e_serie);
}

float function_e_serie(int *amount, float *e_serie){
  int i,increase,fact_num;
  float operate_serie,sum_serie,increase_serie;

  increase=1;
  increase_serie=0.0;

  for(i=1;i<=*amount;i++){
    fact_num=increase*i;
    increase=fact_num;
    operate_serie=(1.0/fact_num)+increase_serie;   //EL UNO TIENE QUE SER DECIMAL
    increase_serie=operate_serie;
  }

  *e_serie=operate_serie;
}
Trauma
  • 25,297
  • 4
  • 37
  • 60

1 Answers1

0

creo que el error esta en la forma de acumular la serie 1/0! + 1/1! + 1/2! + .. + 1/n! , si el ciclo lo inicias en i=1, la variable increase_serie deberia comenzar en 1, que corresponderia a 0!

  • estuve probando tu código, y alcanzaras más precisión, si utilizas variables de tipo "double"; ademas deberías cambiar un poco la lgica de calculo, acumulando en una sola variable, y no pasando de una a otra – RodrigoBurgosMella Jan 16 '19 at 05:16