У меня есть строка, в которой я конвертирую в double следующим образом:
double d = [string doubleValue];
В документации для doubleValue
указывается, что при переполнении этот метод возвращает либо HUGE_VAL
, либо -HUGE_VAL
. Вот как я проверил это раньше:
if (d == HUGE_VAL || d == -HUGE_VAL)
//overflow
Теперь, добавив новый предупреждающий флаг "-Всего", компилятор теперь жалуется, что
Comparing floating point with == or != is unsafe
Как я могу решить эту проблему? Как должен выполнять эти сравнения?
У меня также возникает вопрос о сравнении двух "нормальных" чисел с плавающей запятой (т.е. не "HUGE_VAL" ). Например,
double a, b;
//...
if (a != b) //this will now yield the same warning
//...
Как это разрешить?