我正在使用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])")
}
}
答案 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