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.


8
Cast /
Bryan Chen

Antworten:


413

Die Standardfunktion abs()funktioniert hier hervorragend:

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

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

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

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

Ja, Sie haben Recht, aber mein Fokus lag auf fabs, entschuldigen Sie
Hamed
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.