0

El programa es una Distribución Poisson, pero cuando el número es muy grande, el factorial es impreciso y agrega algunas milésimas.

¿Como podría hacer más precisión el double? ¿O existe un valor con mayor tamaño?

for (int x = 0; x <= 15; x++)
{
    Console.WriteLine("\n\nx:{0} -------------------------- ", x);
    double num1 = Math.Pow(e, -lambda);
    double num2 = Math.Pow(lambda, x);

    double num = num1 * num2;

    fact = 1;
    for (i = 1; i <= number; i++)
    {
        fact = fact * i;
    }
    //Factorial

    double fxres = 0;
    fxres = num / fact;
    Console.WriteLine("F(x): " + fxres);
    fx+= fxres;
    Console.WriteLine("\nSuma: " + fx);

    number++;
padaleiana
  • 2,175
  • 5
  • 16
  • 24
Raul
  • 13
  • 3
  • 1
    ¿Responde esto a tu pregunta? [¿Por qué mis programas no pueden hacer cálculos aritméticos correctamente?](https://es.stackoverflow.com/questions/197/por-qu%c3%a9-mis-programas-no-pueden-hacer-c%c3%a1lculos-aritm%c3%a9ticos-correctamente) – Mauricio Contreras May 27 '22 at 14:07

1 Answers1

0

Si lo importante es la precisión, deberías usar el tipo Decimal. Si lo importante es la velocidad, usar double.

Decimal tampoco es 100% preciso ya que los decimales en informática son así ... finitos. Pero tiene más precisión que double.

bsebe
  • 316
  • 1
  • 8