La función Math.Exp()
se define como que funciona con tipos de precisión doble. Tenga en cuenta que exp (-1000) == 5.08e-435, muy por debajo del valor absoluto más pequeño que se puede expresar en un doble.
Creo que es seguro decir que en cualquier entorno donde se usen los números flotantes IEEE, exp(-1000)
será 0.0. Es muy poco probable que .Net alguna vez abandone el punto flotante IEEE. En términos más generales, supongo que le interesa saber si las cantidades pequeñas son prácticamente nulas. En resumen, sí, en IEEE.
Sin embargo, probablemente sea mejor no diseñar este comportamiento en su código. Como sugiere Darin, compare valores de coma flotante dentro de una tolerancia. Si tiene una razón para trabajar con números muy pequeños o grandes, considere rastrear la cantidad como un logaritmo y realizar operaciones en el dominio logarítmico (si necesita multiplicar, agregar los logaritmos, etc.). Puede utilizar una biblioteca matemática de alta precisión, pero incluso con esos números a medida que los números se vuelven muy pequeños, el cálculo puede estar sujeto a grandes errores de redondeo y poca estabilidad numérica.
Finalmente, si su intención es calcular 1.0 - Math.Exp(-num)
o Math.Exp(-num) - 1
, busque una función de biblioteca que las calcule directamente para obtener la mejor precisión.
¿Alguna razón para el voto a favor? Por favor, deje un comentario cuando downvoting. –