reed randolph marc hastings objective-c

objective c - randolph - Verificar inf-objetivo c



marc randolph (2)

<math.h> tiene una macro, isinf , definida para verificar el tamaño de su argumento y luego llamar a la función __isinf apropiada 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 la misma en architecture / i386 / math.h y architecture / arm / math.h; las implementaciones de las propias funciones probablemente difieren.

Esto se volverá verdadero tanto para el infinito negativo como para el positivo, en caso de que encuentre algo así:

float in = INFINITY; float ni = -INFINITY; NSLog(@"%@", isinf(in) ? @"Yes indeed!" : @"That is not so."); NSLog(@"%@", isinf(ni) ? @"You betcha!" : @"I''m afraid not.");

2011-10-26 18: 41: 53.424 ToInfinityEtc [30197: 903] ¡Sí!
2011-10-26 18: 41: 53.426 ToInfinityEtc [30197: 903] ¡Por supuesto!

¿Alguien sabría el método para probar si un doble (o entero) es infinito, por ejemplo, cuando se realiza la operación 1/0?

isfinite (n) no parece funcionar.


Usted puede comprobar

if(d == INFINITY) {}

o

if(d > DBL_MAX) {}

INFINITY es una expresión flotante constante definida en math.h representa el infinito positivo;
DBL_MAX es una constante definida en float.h representa el doble más grande que se puede representar.

Revisa tambien here