Quel est l’équivalent Swift d’Isnan ()?

Quelle est l’équivalent de isnan() dans Swift? Je dois vérifier si certains résultats d’opération sont valides et supprimer ceux qui ne sont pas valides comme x / 0 Merci

Il est défini dans le protocole FloatingPointNumber auquel les types Float et Double sont conformes. L’utilisation est la suivante:

 let d = 3.0 let isNan = d.isNaN // False let d = Double.NaN let isNan = d.isNaN // True 

Si vous cherchez un moyen de faire vous-même cette vérification, vous pouvez le faire. IEEE définit NaN! = NaN, ce qui signifie que vous ne pouvez pas comparer directement NaN à un nombre pour déterminer son nombre. Cependant, vous pouvez vérifier que peut- maybeNaN != maybeNaN . Si cette condition est vraie, vous avez affaire à NaN.

Bien que vous préfériez utiliser aVariable.isNaN pour déterminer si une valeur est NaN.


Si vous n’êtes pas sûr de la classification de la valeur avec laquelle vous travaillez, vous pouvez changer la valeur de la propriété floatingPointClass de votre type floatingPointClass .

 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) } 

Ses valeurs sont déclarées dans l’énumération FloatingPointClassification .