到目前为止,这还不是问题,但从今天开始,我遇到了一个奇怪的问题,这种问题并不总是发生,但很少发生,我会说 50 次,甚至更少。
我正在像这样比较两个 CGFloat:s:
const CGFloat MYFIRSTFLOAT = /* get the first value */
const CGFloat THESECONDFLOAT = /* get the second value */
if (MYFIRSTFLOAT < THESECONDFLOAT) {
// do something
}
else {
// Do something else
}
正如你所看到的,我没有比较 using==
或任何东西,因为这些是浮点数......(比如,它不应该与比较浮点值有多危险?现在应该)
我遇到的问题是我遇到了两个值准确的情况,但比较结果为是。在我的例子中,这两个值都是“8926.5”——这个值是我从 LLDB 得到的。这有什么好的解释吗???(我认为 LLDB 会四舍五入这两个值,这意味着它们实际上可能是其他值 - 但为什么这也会在运行时发生?)
这种让我很反感,因为我不能只看到问题......好吧,我正在考虑强制浮动到 int 只是为了这个比较,这一次我可以使用它,但我觉得这个问题最好完全理解:-P