Swift零除以零得到NAN

时间:2015-02-03 05:32:28

标签: ios swift

我正在使用Swift进行一些计算。据我所知,在Swift中,0/0给出NAN(不是数字)而不是0.反正它是否会返回0?

for x in 0..<n {
for y in 0..<n {
if(B[0,y,x]==NAN) {B[0,y,x]=0 }    //use of undeclared identifier 'NAN'

println("\((Float)B[0,y,x])")

}
}

2 个答案:

答案 0 :(得分:8)

NaN在FloatingPointType协议中定义 Which is the Swift equivalent of isnan()?

然后,如果你想要零,那么使用Overflow Operators怎么样?

let x = 1
let y = x &/ 0
// y is equal to 0

<强> [增订]

您可以像这样定义自定义溢出运算符。

func &/(lhs: Float, rhs: Float) -> Float {
    if rhs == 0 {
        return 0
    }
    return lhs/rhs
}

var a: Float = 1.0
var b: Float = 0

// this is 0
a &/ b

答案 1 :(得分:2)

来自@bluedome的好答案,如果您希望将其作为扩展程序并且\或有任何错误,那么就有答案

infix operator &/ {}

extension CGFloat {
    public static func &/(lhs: CGFloat, rhs: CGFloat) -> CGFloat {
        if rhs == 0 {
            return 0
        }
        return lhs/rhs
    }
}

然后你可以除以零

let a = 5
let b = 0
print(a &/ b) // outputs 0