我希望能够迅速测试零是正数还是负数。
let neg: CGFloat = -0
let pos: CGFloat = +0
if pos == neg {
// this gets executed, but I don't want this
}
上面的代码无法正常工作,有人可以帮我吗?
谢谢;)
答案 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)
基本上,从普通算术角度来看,neg
和pos
都是相同的零,因此if pos == neg
是正确的。
但是,在表示浮点数时,CGFloat
具有FloatingPointSign
属性作为if neg.sign == pos.sign { } // false
枚举:
如果已设置self的符号位,则为,否则为。机具
sign
符号位操作。
因此,您的if语句将是:
("Suburb_Name": ")([^"]*)