如何将负零与正零分开?

swi*_*ynx 5 numbers zero ios swift negative-zero

我希望能够快速测试零是正数还是负数。

let neg: CGFloat = -0
let pos: CGFloat = +0

if pos == neg {
    // this gets executed, but I don't want this
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不能像我需要的那样工作,有人可以帮助我吗?

谢谢 ;)

Mar*_*n R 6

有“负零”和“正零”浮点数。您可以通过检查.sign属性来消除它们的歧义,但它们(有意)比较为相等:

let neg: CGFloat = -0.0
let pos: CGFloat = +0.0

print(neg.sign) // minus
print(pos.sign) // plus
print(neg == pos) // true

if (neg == pos && neg.sign == pos.sign) {
    // This is not executed.
}
Run Code Online (Sandbox Code Playgroud)

请注意,您必须在初始化中使用浮点文字(“-0.0”或“+0.0”)。整数文字(“+0”、“-0”)相等并转换为正零。