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.


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

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

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


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

Tak, masz rację, ale skupiłem się na fabs, przepraszam
Hamed
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.