-
Swift - Number Data TypeProgramming/Swift 2020. 9. 19. 17:50
모든 데이터는 각자의 Type을 가지고 있습니다. 지난 포스팅에서 상수와 변수에 데이터를 저장할 때 Type Annotation(타입 지정)이나 Type Inference(타입 추론)을 이용해서 Data Type(타입)만큼의 메모리 공간을 할당했습니다.
오늘은 Data Type 중에서 숫자를 저장하는 Number Data Type에 대해서 공부해보려합니다.
Int
Int는 Integer의 약자로 정수를 의미합니다. 정수는 음수, 0, 양수를 포함하는 숫자입니다.
스위프트에서 소수점이 없는 숫자를 상수나 변수에 저장하면 기본적으로 Int로 타입 추론을 합니다.
UInt
UInt는 Unsigned Integer, 즉 부호가 없는 정수를 의미합니다. 0과 양수만을 포함하는 숫자입니다.
그렇다면 양의 정수를 입력하면 상수 unsignedNum를 UInt로 타입 추론을 해줄까요??
확인해보면 Int입니다. 위에서 말씀드렸듯이 스위프트는 정수를 모두 Int로 타입 추론을 합니다.
Type을 UInt로 하고 싶다면
와 같이 직접 UInt로 타입 지정을 해야 합니다.
그럼 매번 양의 정수를 사용할 때는 UInt로 사용해야 할까요??
그렇지 않습니다. 기본적으로 Int를 사용하면 됩니다.
UInt는 음수를 포함하지 않으니 Int보다 2배만큼의 큰 수를 저장할 수 있습니다. 만약 Int보다 크고 UInt보다 작은 수를 저장하고 싶다면 그때 UInt를 사용하면 됩니다
Int8...Int64, Uint8...UInt64
정수를 저장하는 Type에는 Int8 Int16, Int32 Int64, UInt8, UInt16, UInt32, UInt64도 있습니다.
뒤에 따라오는 숫자는 bit를 의미합니다.
Int16은 16bit = 2Byte만큼의 메모리 공간을 가지는 Type입니다.
그렇다면 숫자에 맞춰서 Type을 지정해야 할까요??
그렇지 않습니다. 현재 우리가 사용하는 기기들의 메모리 성능이 매우 좋기 때문에 숫자에 맞춰서 하지 않고 Int로 지정해도 문제가 되지 않습니다. 메모리 성능이 제한되는 embedded system(임베디드 시스템)에서 프로그래밍을 하지 않는다면 신경 쓰지 않으셔도 됩니다.
Int64는 8Byte만큼의 메모리 공간을 할당하겠죠?
Int는 64bit 프로세서에서 8Byte만큼의 메모리 공간을 할당하게 됩니다. 그렇다면 Int64와 같은 크기의 메모리 공간을 할당하게 됩니다.
(하지만 Int와 Int64는 다른 Type입니다. 이 부분은 Type Safety때 자세히 공부해보겠습니다.)
그렇다면 소수점을 포함하는 실수나 Int와 UInt의 최대, 최솟값을 넘어가는 수를 저장하고 싶다면 어떻게 해야 할까요??
Float
Float 은 Floating-point의 약자로 부동소수점을 나타내는 실수입니다. 부동소수점에 대해서는 CS에서 포스팅하겠습니다.
지금은 한가지만 알아주세요.
'부동'이라는 단어는 움직이지 않는다는 의미가 아니라 뜰 부(浮), 움직일 동(動) 둥둥 떠서 움직인다는 의미입니다.
움직이지 않는다랑 전혀 반대의 의미이기 때문에 기억해주세요!
Float은 64bit 프로세서에서 4byte만큼의 메모리 공간을 할당합니다. 4Byte의 메모리 공간을 할당하지만 8Byte인 Int 보다 훨씬 큰 수를 저장할 수 있습니다.
Double
Double은 64bit 프로세서에서 float의 두배인 8byte만큼의 메모리 공간을 할당합니다. 스위프트는 기본적으로 실수를 Double로 타입 추론합니다.
Float도 위에 Int8과 마찬가지의 이유로 자주 사용하지 않습니다.
Float과 Double의 단점
Float과 Double이 Int와 UInt 보다 큰 수를 저장할 수 있고 소수점까지 저장할 수 있다면 모든 수를 Double로 저장하면 될 텐데 왜 그러지 않을까요??
부동소수점을 사용하면 오차가 발생합니다.
Float는 소수점 6자리까지 Double은 15자리까지 정확하게 표현할 수 있습니다.
아주 작은 오차여서 일반적인 상황에선 무시할 수 있지만 은행에서 사용하는 금융 앱이나 아주 정밀한 계산이 필요한 우주 관련 프로그래밍에서 사용할 때는 주의해야 합니다.
마지막으로 스위프트에서 2, 8, 16진법으로 수를 입력하는 방법에 대해 공부하겠습니다.
Binary, Octal, Hexadeciaml number 표기법
0b
0o
0x
앞에 접두어로 0b,0o, 0x를 쓰고 각각 맞는 수를 적으면 10진법으로 바꿔줍니다.
참고자료
https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#
728x90'Programming > Swift' 카테고리의 다른 글
Swift - Type Safety, Type Alias, Type Conversion, Type Casting (0) 2020.09.20 Swift - Character, String, Bool Data Type (0) 2020.09.19 Swift - Type Annotation, Type Inference (0) 2020.09.16 Swift - Naming Convention (0) 2020.09.16 Swift - Constants and Variables (0) 2020.09.16