次のように double に変換する文字列があります。
double d = [string doubleValue];
のドキュメントにdoubleValue
よると、オーバーフロー時に、このメソッドはHUGE_VAL
またはを返します-HUGE_VAL
。これは、以前にこれを確認した方法です。
if (d == HUGE_VAL || d == -HUGE_VAL)
//overflow
現在、新しい「-Weverything」警告フラグを追加して以来、コンパイラは次のように不平を言うようになりました
Comparing floating point with == or != is unsafe
この問題を解決するにはどうすればよいですか? これらの比較はどのように行うべきですか?
2 つの「通常の」浮動小数点数 (つまり、「HUGE_VAL」ではない) の比較についても同じ質問があります。例えば、
double a, b;
//...
if (a != b) //this will now yield the same warning
//...
これはどのように解決する必要がありますか?