Swift - Converti in valore assoluto


192

c'è un modo per ottenere il valore assoluto da un numero intero?
per esempio

-8  
to  
 8

Ho già provato a usare UInt () supponendo che convertirà Int in valore senza segno ma non ha funzionato.


8
cast / convert non dovrebbe mai essere usato per cambiare valore
Bryan Chen,

Risposte:


415

La abs()funzione standard funziona alla grande qui:

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

Bello amico! Grazie! Accetterò la risposta dopo 10 minuti :)
Niko Adrianus Yuwono l'

Cosa deve essere importato per usare abs ()?
Jarrod Smith,

3
@JarrodSmith: import Foundation
Adrian

3
Puoi importare Darwin o Foundation
YYamil il

Darwin non fa parte della Fondazione?
Marin,

38

Con Swift 5, puoi utilizzare uno dei due seguenti modi per convertire un numero intero nel suo valore assoluto.


# 1. Ottieni il valore assoluto di una proprietà Intfrommagnitude

Intha una magnitudeproprietà. magnitudeha la seguente dichiarazione:

var magnitude: UInt { get }

Per qualsiasi valore numerico x, x.magnitudeè il valore assoluto di x.

Il frammento di codice seguente mostra come utilizzare la magnitudeproprietà per ottenere il valore assoluto su Intun'istanza:

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

# 2. Ottieni il valore assoluto di un metodo Intfromabs(_:)

Swift ha una funzione numerica globale chiamata abs(_:)metodo. abs(_:)ha la seguente dichiarazione:

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

Restituisce il valore assoluto di un determinato numero.

Il frammento di codice seguente mostra come utilizzare abs(_:)la funzione globale per ottenere il valore assoluto su Intun'istanza:

let value = -5
print(abs(value)) // prints: 5

print (abs (Int.min)) non funzionerà. Esiste una soluzione per Swift 3? Non ho ancora aggiornato il mio progetto.
bibscy

3
Occasione mancata per dire "ottieni il valore assoluto su una posizione Int "
LinusGeffarth

1
@bibscy Vedi la spiegazione di Apple per capire perché abs(Int8.min)non può funzionare e quindi crea un errore di overflow.
Imanou Petit,


2

Se vuoi ottenere il valore assoluto da un doppio o da Int, usa fabsfunc:

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6

Sì, hai ragione, ma la mia attenzione era concentrata fabs, mi scusi
Hamed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.