Swift - Convertir en valeur absolue


194

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é.


9
cast / convert ne devrait jamais être utilisé pour changer de valeur
Bryan Chen

Réponses:


417

La abs()fonction standard fonctionne très bien ici:

let c = -8
print(abs(c))
// 8

Nice info man! Merci! J'accepterai la réponse après 10 minutes :)
Niko Adrianus Yuwono

Que faut-il importer pour utiliser abs ()?
Jarrod Smith

3
@JarrodSmith: import Foundation
Adrian

3
Vous pouvez importer Darwin ou Foundation
YYamil

Darwin ne fait-il pas partie de la Fondation?
Marin

40

Avec Swift 5, vous pouvez utiliser l'une des deux méthodes suivantes pour convertir un entier en sa valeur absolue.


#1. Obtenir la valeur absolue d'une propriété Intfrommagnitude

Inta une magnitudepropriété. magnitudea la déclaration suivante:

var magnitude: UInt { get }

Pour toute valeur numérique x, x.magnitudeest la valeur absolue de x.

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

# 2. Obtenir la valeur absolue d'une méthode 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

print (abs (Int.min)) ne fonctionnera pas. Existe-t-il une solution pour Swift 3? Je n'ai pas encore mis à jour mon projet.
bibscy le

3
Occasion manquée de dire "obtenir la valeur absolue sur une position Int "
LinusGeffarth

1
@bibscy Voir l'explication d' Apple pour comprendre pourquoi abs(Int8.min)ne peut pas fonctionner et crée donc une erreur de débordement.
Imanou Petit


2

Si vous voulez obtenir une valeur absolue à partir d'un double ou d'un Int, utilisez fabsfunc:

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6

Oui, vous avez raison, mais je me concentrais sur fabs, excusez-moi
Hamed
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.