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.
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.
Odpowiedzi:
Standardowa abs()
funkcja działa tutaj świetnie:
let c = -8
print(abs(c))
// 8
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ą.
Int
odmagnitude
nieruchomościInt
ma magnitude
właściwość. magnitude
ma następującą deklarację:
var magnitude: UInt { get }
Dla każdej wartości liczbowej
x
,x.magnitude
to wartość bezwzględnax
.
Poniższy fragment kodu pokazuje, jak używać magnitude
właściwości w celu uzyskania wartości bezwzględnej dla Int
instancji:
let value = -5
print(value.magnitude) // prints: 5
Int
odabs(_:)
metodySwift 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 Int
instancji:
let value = -5
print(abs(value)) // prints: 5
abs(Int8.min)
nie może działać, i dlatego powoduje błąd przepełnienia.
Jeśli chcesz zmusić liczbę do zmiany lub pozostawić ją dodatnią.
Oto sposób:
abs() for int
fabs() for double
fabsf() for float