0
0を比較する場合CGFLOAT_MIN
それは最小の表現以外の正のです0に等しいないあるので直接なぜ0 == CGFLOAT_MINはfalseですか?
マイコード
float minVar = CGFLOAT_MIN;
printf("CGFLOAT_MIN = %f\n\n", CGFLOAT_MIN);
printf("0 == CGFLOAT_MIN \t%s\n", (0) == CGFLOAT_MIN ? "true" : "false");
printf("0 == minVar \t%s\n", (0) == minVar ? "true" : "false");
printf("0 == 0.000000 \t%s\n", (0) == 0.000000 ? "true" : "false");
出力が
CGFLOAT_MIN = 0.000000
0 == CGFLOAT_MIN false
0 == minVar true
0 == 0.000000 true
ドキュメント: "32ビットコードの場合、この値は' 1.17549435e-38F'です.64ビットコードの場合は '2.2250738585072014e-308'です。 – jtbandes
浮動小数点値を正確に比較することはめったにありません。イプシロンを使用する。 –