Существуют «отрицательный ноль» и «положительный ноль» с плавающей запятой.Вы можете устранить неоднозначность, проверив свойство .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") равны и преобразуются в положительный ноль.