快速将负零与正零分开

时间:2018-10-25 07:04:10

标签: ios swift numbers zero negative-zero

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

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

if pos == neg {
    // this gets executed, but I don't want this
}

上面的代码无法正常工作,有人可以帮我吗?

谢谢;)

2 个答案:

答案 0 :(得分:3)

有“负零”和“正零”浮点数。 您可以通过检查.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.
}

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

答案 1 :(得分:1)

基本上,从普通算术角度来看,negpos都是相同的零,因此if pos == neg是正确的。

但是,在表示浮点数时,CGFloat具有FloatingPointSign属性作为if neg.sign == pos.sign { } // false 枚举:

  如果已设置self的符号位,则为

,否则为。机具   sign符号位操作。

因此,您的if语句将是:

("Suburb_Name": ")([^"]*)