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.


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

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

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

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

Sim, você está certo, mas meu foco era fabs, desculpe-me
Hamed
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.