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ą.
Intodmagnitude nieruchomościIntma magnitudewłaściwość. magnitudema następującą deklarację:
var magnitude: UInt { get }
Dla każdej wartości liczbowej
x,x.magnitudeto wartość bezwzględnax.
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
Intodabs(_:) 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 Intinstancji:
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