스위프트-절대 값으로 변환


191

정수에서 절대 값을 얻는 방법이 있습니까?
예를 들어

-8  
to  
 8

Int를 부호없는 값으로 변환한다고 가정하지만 UInt ()를 이미 사용하려고했지만 작동하지 않았습니다.


8
캐스트 / 변환은 가치를 바꾸는 데 사용되어서는 안됩니다
Bryan Chen

답변:


414

표준 abs()기능은 여기에서 훌륭하게 작동합니다.

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

좋은 정보 남자! 감사! 나는 10 분 후에 답변을 수락합니다 :)
Niko Adrianus Yuwono

abs ()를 사용하려면 무엇을 가져와야합니까?
Jarrod Smith

3
@JarrodSmith : 수입 재단
Adrian

3
Darwin 또는 Foundation
YYamil을

다윈은 재단의 일부가 아닙니까?
Marin

38

Swift 5에서는 정수를 절대 값으로 변환하기 위해 다음 두 가지 방법 중 하나를 사용할 수 있습니다.


#1. 의 절대 값 가져 오기 Int에서 magnitude속성을

Intmagnitude속성을. magnitude다음과 같은 선언이 있습니다.

var magnitude: UInt { get }

임의의 수치를 들면 x, x.magnitude절대 값이다 x.

다음 코드 스 니펫은 인스턴스 magnitude에서 절대 값을 얻기 위해 property 를 사용하는 방법을 보여줍니다 Int.

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

# 2. Intfrom abs(_:)메소드 의 절대 값 얻기

Swift에는 abs(_:)method 라는 전역 숫자 함수가 있습니다. abs(_:)다음과 같은 선언이 있습니다.

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

주어진 숫자의 절대 값을 반환합니다.

다음 코드 스 니펫은 인스턴스 abs(_:)에서 절대 값을 얻기 위해 전역 함수 를 사용하는 방법을 보여줍니다 Int.

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

print (abs (Int.min))가 작동하지 않습니다. Swift 3에 대한 솔루션이 있습니까? 아직 프로젝트를 업데이트하지 않았습니다.
bibscy

3
" Int 자세 에서 절대 가치를 얻는다"
놓쳤다

1
@bibscy Apple의 설명 을 참조 하여 왜 abs(Int8.min)작동하지 않아 오버플로 오류가 발생 하는지 이해 하십시오 .
Imanou Petit

8

숫자를 강제로 변경하거나 긍정적으로 유지하려면.
방법은 다음과 같습니다.

abs() for int
fabs() for double
fabsf() for float

팹은 더 이상 사용되지 않습니다
Chewie The Chorkie

2

double 또는 Int에서 절대 값을 얻으려면 fabsfunc을 사용하십시오 .

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

예, 당신 말이 맞아요.하지만 제 관심은 fabs실례합니다
Hamed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.