Szybki - Konwertuj na wartość bezwzględną

191

czy jest jakiś sposób na uzyskanie wartości bezwzględnej z liczby całkowitej?
na przykład

-8  
to  
 8

Próbowałem już użyć UInt (), zakładając, że przekształci Int na wartość bez znaku, ale to nie zadziałało.

Niko Adrianus Yuwono
źródło
8
obsada / konwersja nigdy nie powinna być używana do zmiany wartości
Bryan Chen

Odpowiedzi:

414

Standardowa abs()funkcja działa tutaj świetnie:

let c = -8
print(abs(c))
// 8
BS
źródło
Miły człowiek informacji! Dzięki! Przyjmę odpowiedź po 10 minutach :)
Niko Adrianus Yuwono
Co należy zaimportować, aby użyć abs ()?
Jarrod Smith
3
@JarrodSmith: import Foundation
Adrian
3
Możesz zaimportować Darwin lub Foundation
YYamil
Czy Darwin nie jest częścią Fundacji?
Marin
38

W Swift 5 możesz użyć jednego z dwóch poniższych sposobów, aby przekonwertować liczbę całkowitą na jej wartość bezwzględną.


# 1. Uzyskaj wartość bezwzględną Intodmagnitude nieruchomości

Intma magnitudewłaściwość. magnitudema następującą deklarację:

var magnitude: UInt { get }

Dla każdej wartości liczbowej x, x.magnitudeto wartość bezwzględna x.

Poniższy fragment kodu pokazuje, jak używać magnitudewłaściwości w celu uzyskania wartości bezwzględnej dla Intinstancji:

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

# 2. Uzyskaj wartość bezwzględną Intodabs(_:) metody

Swift ma globalną funkcję numeryczną o nazwie abs(_:)metoda. abs(_:)ma następującą deklarację:

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

Zwraca wartość bezwzględną podanej liczby.

Poniższy fragment kodu pokazuje, jak używać abs(_:)funkcji globalnej w celu uzyskania wartości bezwzględnej dla Intinstancji:

let value = -5
print(abs(value)) // prints: 5
Imanou Petit
źródło
print (abs (Int.min)) nie będzie działać. Czy jest jakieś rozwiązanie dla Swift 3? Nie zaktualizowałem jeszcze mojego projektu.
bibscy
3
Nieodebrana okazja, aby powiedzieć „uzyskać wartość bezwzględną na stanowisku int
LinusGeffarth
1
@bibscy Zobacz wyjaśnienie Apple, aby zrozumieć, dlaczego abs(Int8.min)nie może działać, i dlatego powoduje błąd przepełnienia.
Imanou Petit
8

Jeśli chcesz zmusić liczbę do zmiany lub pozostawić ją dodatnią.
Oto sposób:

abs() for int
fabs() for double
fabsf() for float
Sourabh Kumbhar
źródło
fabs jest przestarzałe
Chewie The Chorkie
2

Jeśli chcesz uzyskać wartość bezwzględną z podwójnej lub Int, użyj fabsfunc:

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6
Hamed
źródło
Tak, masz rację, ale skupiłem się na fabs, przepraszam
Hamed