🔥 숫자 리터럴
Swift에서는 다양한 형식으로 숫자 리터럴을 표현할 수 있습니다. 정수 리터럴과 부동 소수점 리터럴로 나누어 살펴보도록 하죠.
정수 리터럴
정수 리터럴은 다음과 같은 형식으로 작성할 수 있습니다.
10진수
: 접두사 없이 작성2진수
:0b
접두사 사용8진수
:0o
접두사 사용16진수
:0x
접두사 사용
let decimalInteger = 17 // 10진수로 17 let binaryInteger = 0b10001 // 2진수로 17 let octalInteger = 0o21 // 8진수로 17 let hexadecimalInteger = 0x11 // 16진수로 17
swift
위 코드에서 볼 수 있듯이 모든 정수 리터럴은 10진수 값 17
과 동일합니다. 2진수 10001
, 8진수 21
, 16진수 11
은 모두 10진수로 변환하면 17
이 되는 거죠.
부동 소수점 리터럴
부동 소수점 리터럴은 10진수(접두사 없음) 또는 16진수(0x
접두사 사용)로 작성할 수 있습니다. 소수점을 기준으로 양쪽에 항상 숫자(또는 16진수)가 있어야 합니다. 10진수 부동 소수점은 e
또는 E
로 표시되는 선택적 지수(Exponent)
를 가질 수 있고, 16진수 부동 소수점은 p
또는 P
로 표시되는 지수를 반드시 가져야 합니다.
지수가 x
인 10진수의 경우 기본 숫자에 10ˣ을 곱합니다.
1.25e2
는 1.25 x 10²이므로125.0
입니다.1.25e-2
는 1.25 x 10⁻²이므로0.0125
입니다.
지수가 x
인 16진수의 경우 기본 숫자에 2ˣ을 곱합니다.
0xFp2
는 15 x 2²이므로60.0
입니다.0xFp-2
는 15 x 2⁻²이므로3.75
입니다.
let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0
swift
위 코드의 모든 부동 소수점 리터럴은 10진수 값 12.1875
와 동일하답니다.
가독성을 위한 포맷팅
숫자 리터럴은 가독성을 높이기 위해 추가적인 포맷팅을 포함할 수 있습니다. 정수와 부동 소수점 모두 앞에 0을 추가로 붙일 수 있고, 가독성을 위해 언더스코어(_
)를 사용할 수 있습니다. 이러한 포맷팅은 리터럴의 기본 값에 영향을 주지 않아요.
let paddedDouble = 000123.456 // 123.456 let oneMillion = 1_000_000 // 1000000 let justOverOneMillion = 1_000_000.000_000_1 // 1000000.0000001
swift
위 코드에서 paddedDouble
은 앞에 0이 추가되었지만 값은 123.456
으로 동일합니다. oneMillion
은 언더스코어로 자릿수를 구분했지만 값은 1000000
입니다. justOverOneMillion
은 정수 부분과 소수 부분에 모두 언더스코어를 사용했지만 값은 1000000.0000001
로 동일하죠.
이렇게 Swift는 다양한 숫자 리터럴 표현을 지원하므로 상황에 맞는 적절한 형식을 선택하여 사용할 수 있습니다. 2진수, 8진수, 16진수 리터럴은 비트 연산이나 색상 표현 등 특정 도메인에서 유용하게 활용할 수 있고, 가독성을 위한 포맷팅은 코드의 명확성을 높이는 데 도움을 줍니다.