existe-t-il un moyen d'obtenir une valeur absolue à partir d'un entier?
par exemple
-8
to
8
J'ai déjà essayé d'utiliser UInt () en supposant qu'il convertira l'Int en valeur non signée mais cela n'a pas fonctionné.
existe-t-il un moyen d'obtenir une valeur absolue à partir d'un entier?
par exemple
-8
to
8
J'ai déjà essayé d'utiliser UInt () en supposant qu'il convertira l'Int en valeur non signée mais cela n'a pas fonctionné.
Réponses:
La abs()fonction standard fonctionne très bien ici:
let c = -8
print(abs(c))
// 8
Avec Swift 5, vous pouvez utiliser l'une des deux méthodes suivantes pour convertir un entier en sa valeur absolue.
IntfrommagnitudeInta une magnitudepropriété. magnitudea la déclaration suivante:
var magnitude: UInt { get }
Pour toute valeur numérique
x,x.magnitudeest la valeur absolue dex.
L'extrait de code suivant montre comment utiliser la magnitudepropriété pour obtenir la valeur absolue sur une Intinstance:
let value = -5
print(value.magnitude) // prints: 5
Intfromabs(_:)Swift a une fonction numérique globale appelée abs(_:)méthode. abs(_:)a la déclaration suivante:
func abs<T>(_ x: T) -> T where T : Comparable, T : SignedNumeric
Renvoie la valeur absolue du nombre donné.
L'extrait de code suivant montre comment utiliser abs(_:)la fonction globale pour obtenir la valeur absolue sur une Intinstance:
let value = -5
print(abs(value)) // prints: 5
abs(Int8.min)ne peut pas fonctionner et crée donc une erreur de débordement.
Si vous voulez forcer un nombre à changer ou le garder positif.
Voici le chemin:
abs() for int
fabs() for double
fabsf() for float