¿Cómo se verifican los valores infinitos e indeterminados en C ++?

En mis programas, el infinito generalmente surge cuando un valor se divide por cero. Me pongo indeterminado cuando divido cero por cero. ¿Cómo se verifican los valores infinitos e indeterminados en C ++?

En C ++, el infinito está representado por 1. # INF. Indeterminado está representado por -1. # IND. El problema es cómo probar si una variable es infinita o indeterminada. Comprobar el infinito es relativamente sencillo: encuentra la definición de infinito en su C ++ particular. Para mi caso (VS2003), es std :: numeric_limits :: infinity (). Tienes que incluir "límites" para poder usarlo. Puede asignar este valor infinito a una variable y puede compararlo con algún valor para verificar si ese valor es infinito.

Indeterminado es un poco complicado, porque no puede comparar un valor indeterminado con otro valor. Cualquier comparación devuelve falso. Puede usar esta propiedad para detectar un valor indeterminado al compararlo consigo mismo. Digamos que tiene una variable doble llamada aVal. En condiciones normales, aVal! = AVal devuelve falso. Pero si el valor es indeterminado, aIndVal! = AIndVal devuelve verdadero. Esta situación extraña no está presente para valores infinitos, es decir, aInfVal! = AInfVal siempre devuelve falso.

Aquí hay dos funciones que se pueden usar para verificar valores indeterminados e infinitos:

#include "limits.h"
#include "math.h"

bool isIndeterminate(const double pV)
{
    return (pV != pV);
} 

bool isInfinite(const double pV)
{
    return (fabs(pV) == std::numeric_limits::infinity())
}

¿Hay mejores formas para estos controles? ¿Me estoy perdiendo algo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta