Swift'de isnan()
eşdeğeri nedir? Bazı işlem sonuçları geçerli olup olmadığını kontrol etmek ve x/0 teşekkürisnan() 'nın Swift eşdeğeri hangisidir?
cevap
Hem Float ve Double türleri uygun FloatingPointNumber protokolü tanımlanan oluyor gibi bu geçersiz silmeniz gerekir. Kullanım şu şekildedir:
let d = 3.0
let isNan = d.isNaN // False
let d = Double.NaN
let isNan = d.isNaN // True
Eğer bu kontrolü kendiniz yapmak için bir yol arıyorsanız, yapabilirsiniz. IEEE, NaN! = NaN'yi tanımlar; yani, bir sayıyı doğrudan belirlemek için NaN ile bir sayıyı doğrudan karşılaştıramazsınız. Bununla birlikte, maybeNaN != maybeNaN
'u kontrol edebilirsiniz. Bu koşul doğru olarak değerlendirilirse, NaN ile uğraşıyorsunuz demektir.
'u kullanmalısınız, ancak NaN değeri olup olmadığını belirlemek için aVariable.isNaN
'u kullanmayı tercih edin. Eğer birlikte çalıştığınız değerin sınıflandırılması konusunda daha az eminsen Bir yan not biraz itibariyle
, sizin
FloatingPointNumber
uygun türünün
floatingPointClass
özelliğinin değerini üzerinde geçiş yapabilirsiniz.
let noClueWhatThisIs: Double = // ...
switch noClueWhatThisIs.floatingPointClass {
case .SignalingNaN:
print(FloatingPointClassification.SignalingNaN)
case .QuietNaN:
print(FloatingPointClassification.QuietNaN)
case .NegativeInfinity:
print(FloatingPointClassification.NegativeInfinity)
case .NegativeNormal:
print(FloatingPointClassification.NegativeNormal)
case .NegativeSubnormal:
print(FloatingPointClassification.NegativeSubnormal)
case .NegativeZero:
print(FloatingPointClassification.NegativeZero)
case .PositiveZero:
print(FloatingPointClassification.PositiveZero)
case .PositiveSubnormal:
print(FloatingPointClassification.PositiveSubnormal)
case .PositiveNormal:
print(FloatingPointClassification.PositiveNormal)
case .PositiveInfinity:
print(FloatingPointClassification.PositiveInfinity)
}
Onun değerleri FloatingPointClassification enum bildirilmiştir.
bölümü tarafından yapılan birimin sonucu .nan değil .inf. – user3441734