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