0
爲什麼0時,直接比較爲什麼0 == CGFLOAT_MIN是錯誤的?
我的代碼不等於CGLOAT_MIN
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
你應該很少比較浮點值;使用一個epsilon。 –