¿Alguien conocería el método para probar si un doble (o entero) es infinito, por ejemplo cuando se realiza la operación 1/0?Verificar inf - objetivo c
isfinite (n) parece que no funciona.
¿Alguien conocería el método para probar si un doble (o entero) es infinito, por ejemplo cuando se realiza la operación 1/0?Verificar inf - objetivo c
isfinite (n) parece que no funciona.
Es posible comprobar
if(d == INFINITY) {}
o
if(d > DBL_MAX) {}
INFINITY
es una expresión de flotación constante definida en math.h
representa el infinito positivo;
DBL_MAX
es una constante definida en float.h
que representa el doble más grande que se puede representar.
Check también here
<math.h> tiene una macro, isinf
, definido para comprobar el tamaño de su argumento y luego llamar a la función apropiada __isinf
para el tipo:
#define isinf(x) \
( sizeof (x) == sizeof(float) ? __isinff((float)(x)) \
: sizeof (x) == sizeof(double) ? __isinfd((double)(x)) \
: __isinf ((long double)(x)))
La macro es lo mismo en arquitectura/i386/math.h y architecture/arm/math.h; las implementaciones de las funciones presumiblemente difieren.
Esto devolverá cierto para el infinito negativo así como positivo, en caso de que suceda a encontrar tal cosa:
2011-10-26 18: 41: 53.424 ToInfinityEtc [30197: 903] Sí de verdad!
2011-10-26 18: 41: 53.426 ToInfinityEtc [30197: 903] ¡Usted betcha!
pero isinf es solo para el compilador de GNU. no es compatible con llvm. xcode dice "uso de identificador undeclerated isinf", aunque el indicador + clic navega a cmath.I importó math.h manualmente. pero aún navega a cmath y sí no puede compilarse debido a este error "uso de identificador undeclerated isinf". finalmente reemplacé std :: isinf en lugar de isinf ahora compilado. –
math.h y 'isinf()' [son ambos parte del estándar POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html), @N.Ramos. No tienen nada que ver con GCC. Tienes otro problema en alguna parte. –
Un número entero no puede ser infinito. –
Puedes probar 'x * 2 == x && x! = 0' o algo así ... Para NaN puedes probar' x! = X'. –
¿Puedes aclarar a qué te refieres con "' isfinite() 'no parece funcionar"? –