Swift - In absoluten Wert konvertieren

190

Gibt es eine Möglichkeit, einen absoluten Wert aus einer Ganzzahl zu erhalten?
beispielsweise

-8  
to  
 8

Ich habe bereits versucht, UInt () zu verwenden, vorausgesetzt, es konvertiert das Int in einen vorzeichenlosen Wert, aber es hat nicht funktioniert.

Niko Adrianus Yuwono
quelle
8
Cast /
Bryan Chen

Antworten:

413

Die Standardfunktion abs()funktioniert hier hervorragend:

let c = -8
print(abs(c))
// 8
BS
quelle
Netter Info Mann! Vielen Dank! Ich werde die Antwort nach 10 Minuten akzeptieren :)
Niko Adrianus Yuwono
Was muss importiert werden, um abs () zu verwenden?
Jarrod Smith
3
@ JarrodSmith: Import Foundation
Adrian
3
Sie können entweder Darwin oder Foundation
YYamil
Ist Darwin nicht Teil der Stiftung?
Marin
38

Mit Swift 5 können Sie eine der beiden folgenden Methoden verwenden, um eine Ganzzahl in ihren absoluten Wert umzuwandeln.


# 1. Holen Sie sich den absoluten Wert einer Intvon magnitudeEigenschaft

Inthat eine magnitudeEigenschaft. magnitudehat die folgende Erklärung:

var magnitude: UInt { get }

Für jeden numerischen Wert x, x.magnitudeist der absolute Wert x.

Das folgende Codefragment zeigt, wie Sie die magnitudeEigenschaft verwenden, um den absoluten Wert für eine IntInstanz abzurufen:

let value = -5
print(value.magnitude) // prints: 5

# 2. Ermittelt den absoluten Wert einer Intfrom- abs(_:)Methode

Swift hat eine globale numerische Funktion namens abs(_:)Methode. abs(_:)hat die folgende Erklärung:

func abs<T>(_ x: T) -> T where T : Comparable, T : SignedNumeric

Gibt den absoluten Wert der angegebenen Zahl zurück.

Das folgende Codeausschnitt zeigt, wie die abs(_:)globale Funktion verwendet wird, um den absoluten Wert für eine IntInstanz abzurufen:

let value = -5
print(abs(value)) // prints: 5
Imanou Petit
quelle
print (abs (Int.min)) funktioniert nicht. Gibt es eine Lösung für Swift 3? Ich habe mein Projekt noch nicht aktualisiert.
bibscy
3
Verpasste Gelegenheit zu sagen "
Holen Sie
1
@bibscy Lesen Sie die Erklärung von Apple, um zu verstehen, warum abs(Int8.min)dies nicht funktioniert, und verursachen Sie daher einen Überlauffehler.
Imanou Petit
7

Wenn Sie eine Zahl zwingen möchten, sie zu ändern oder positiv zu halten.
Hier ist der Weg:

abs() for int
fabs() for double
fabsf() for float
Sourabh Kumbhar
quelle
Fabs ist veraltet
Chewie The Chorkie
2

Wenn Sie einen absoluten Wert von einem Double oder Int erhalten möchten, verwenden Sie fabsfunc:

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6
Hamed
quelle
Ja, Sie haben Recht, aber mein Fokus lag auf fabs, entschuldigen Sie
Hamed