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.
Int
frommagnitude
Int
a une magnitude
propriété. magnitude
a la déclaration suivante:
var magnitude: UInt { get }
Pour toute valeur numérique
x
,x.magnitude
est la valeur absolue dex
.
L'extrait de code suivant montre comment utiliser la magnitude
propriété pour obtenir la valeur absolue sur une Int
instance:
let value = -5
print(value.magnitude) // prints: 5
Int
fromabs(_:)
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 Int
instance:
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