Swift - Converta em valor absoluto

190

existe alguma maneira de obter valor absoluto de um número inteiro?
por exemplo

-8  
to  
 8

Eu já tentei usar UInt () assumindo que ele converterá o Int em valor não assinado, mas não funcionou.

Niko Adrianus Yuwono
fonte
8
cast / converso nunca deve usado para alterar o valor
Bryan Chen

Respostas:

413

A abs()função padrão funciona muito bem aqui:

let c = -8
print(abs(c))
// 8
BS
fonte
Nice info man! Obrigado! Vou aceitar a resposta após 10 minutos :)
Niko Adrianus Yuwono
O que precisa ser importado para usar abs ()?
Jarrod Smith
3
@JarrodSmith: import Foundation
Adrian
3
Você pode importar Darwin ou Foundation
YYamil
Darwin não faz parte da Fundação?
Marin
38

Com o Swift 5, você pode usar uma das duas maneiras a seguir para converter um número inteiro em seu valor absoluto.


# 1 Obter o valor absoluto de uma propriedade Intfrommagnitude

Inttem uma magnitudepropriedade magnitudetem a seguinte declaração:

var magnitude: UInt { get }

Para qualquer valor numérico x, x.magnitudeé o valor absoluto de x.

O seguinte snippet de código mostra como usar a magnitudepropriedade para obter o valor absoluto em uma Intinstância:

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

# 2 Obter o valor absoluto de um método Intfromabs(_:)

Swift tem uma função numérica global chamada abs(_:)método. abs(_:)tem a seguinte declaração:

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

Retorna o valor absoluto do número fornecido.

O seguinte trecho de código mostra como usar abs(_:)a função global para obter o valor absoluto em uma Intinstância:

let value = -5
print(abs(value)) // prints: 5
Imanou Petit
fonte
print (abs (Int.min)) não funcionará. Existe alguma solução para o Swift 3? Ainda não atualizei meu projeto.
bibscy
3
Oportunidade perdida para dizer "obtenha o valor absoluto em uma posição Int "
LinusGeffarth 16/18
1
@bibscy Veja a explicação da Apple para entender por abs(Int8.min)que não pode funcionar e, portanto, cria um erro de estouro.
Imanou Petit
7

Se você deseja forçar um número a mudar ou mantê-lo positivo.
Aqui está o caminho:

abs() for int
fabs() for double
fabsf() for float
Sourabh Kumbhar
fonte
fabs está obsoleto #
Chewie The Chorkie
2

Se você deseja obter um valor absoluto de um double ou Int, use fabsfunc:

var c = -12.09
print(fabs(c)) // 12.09
c = -6
print(fabs(c)) // 6
Hamed
fonte
Sim, você está certo, mas meu foco era fabs, desculpe-me
Hamed