我有一个字符串,可以像这样转换为双精度:
double d = [string doubleValue];
的文档doubleValue
告诉我们,在溢出时,此方法返回HUGE_VAL
or -HUGE_VAL
。这就是我之前检查的方式:
if (d == HUGE_VAL || d == -HUGE_VAL)
//overflow
现在,由于添加了新的“-Weverything”警告标志,编译器现在抱怨
Comparing floating point with == or != is unsafe
我该如何解决这个问题?我应该如何进行这些比较?
关于比较两个“正常”浮点数(即不是“HUGE_VAL”),我也有同样的问题。例如,
double a, b;
//...
if (a != b) //this will now yield the same warning
//...
这应该如何解决?