숫자 리터럴(Numeric literals)
정수 리터럴(integer literal)을 10진수(decimal number)로 표현하면 접두사(prefix)가 붙지 않습니다.
정수 리터럴을 2진수(binary number)로 표현하면 접두사 0b가 붙습니다.
정수 리터럴을 8진수(octal number)로 표현하면 접두사 0o가 붙습니다.
정수 리터럴을 16진수(hexadecimal number)로 표현하면 접두사 0x가 붙습니다.
let decimalInteger = 17
let binaryInteger = 0b10001
let octalInteger = 0o21
let hexadecimalInteger = 0x11
위 코드는 다음과 같이 글로 표현할 수 있습니다.
만약 17이라는 정수 리터럴을 10진법으로 작성하면 접두사가 붙지 않습니다. 따라서 17을 그대로 적습니다. 이 값을 decimalInteger라는 이름의 상수에 대입하여 선언합니다.
만약 17이라는 정수 리터럴을 2진법(binary notation)으로 작성하면 0b10001이 됩니다. 이 값을 binaryInteger라는 이름의 상수에 대입하여 선언합니다.
만약 17이라는 정수 리터럴을 8진법(octal notation)으로 작성하면 0o21이 됩니다. 이 값을 octalInteger라는 이름의 상수에 대입하여 선언합니다.
만약 17이라는 정수 리터럴을 16진법(hexadecimal notation)으로 작성하면 0x11이 됩니다. 이 값을 hexadecimalInteger라는 이름의 상수에 대입하여 선언합니다.
위 상수 모두 17을 나타내지만 표현된 방식이 다릅니다.
부동소수점 리터럴(floating-point literal)을 10진수로 표현하면 접두사가 붙지 않습니다. 그러나 16진수으로 표현하면 접두사 0x가 붙습니다. 부동소수점을 10진수 또는 16진수로 표현할 때는 소수점 양쪽에 항상 숫자 또는 16진수가 위치해야 합니다. Float 타입의 10진수 값은 지수(exponent)를 가질 수도 있고 가지지 않을 수도 있으며, 지수가 존재할 경우 대문자(uppercase) 또는 소문자(lowercase) e로 적습니다. 반면 float 타입의 16진수 값은 지수를 필수적으로 가집니다. 이 경우 지수를 대문자 또는 소문자 p로 적습니다.
지수가 exp개 있는 10진수 값의 경우 밑(base number)은 10의 exp 승을 곱한 만큼 커집니다.
1.25e2는 1.25 x 10^2 또는 125.0을 나타냅니다.
1.25e-2는 1.25 x 10^-2 또는 0.0125를 나타냅니다.
지수가 exp개 있는 16진수 값의 경우 밑(base number)은 10의 exp 승을 곱한 만큼 커집니다.
0xFp2는 15 x 2^2 또는 60.0을 나타냅니다.
0xFp-2는 15 x 2^-2 또는 3.75를 나타냅니다.
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
위 코드는 다음과 같이 글로 표현할 수 있습니다.
12.1875라는 부동소수점 값을 decimalDouble 상수에 대입하여 선언합니다.
12.1875를 지수를 사용하여 표현하면 1.21875e1이 됩니다. 이 값을 exponentDouble 상수에 대입하여 선언합니다.
12.1875를 16진법으로 표현하면 0xC.3p0가 됩니다. 이 값을 hexadecimalDouble 상수에 대입하여 선언합니다.
숫자 리터럴은 값을 읽기 쉬운 형태로 표현할 수 있는 기능을 제공합니다. 정수와 부동소수점 둘 다 값에 0을 여러 개 추가하거나 _를 추가할 수 있습니다. 가독성을 위해 0이나 _를 추가하여도 값 자체에는 영향을 미치지 않습니다.
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1
위 코드는 다음과 같이 글로 표현할 수 있습니다.
000123.456에서 추가된 000을 제거하면 123.456과 같습니다. 이 값을 paddedDouble 상수에 대입하여 선언합니다.
1_000_000에서 _를 제거하면 1000000과 같습니다. (1_000_000은 0이 추가된 것이 아니라 가독성을 위해 _이 추가된 값입니다.) 이 값을 oneMillion 상수에 대입하여 선언합니다.
1_000_000.000_000_1에서 _를 제거하면 1000000.0000001과 같습니다. (1_000_000.000_000_1은 0이 추가된 것이 아니라 가독성을 위해 _이 추가된 값입니다.)이 값을 justOverOneMillion 상수에 대입하여 선언합니다.
이 글은 Apple이 제공하는 'The Swift Programming Language 5.2 버전' (https://swift.org)을 번역 및 참고하여 작성하였습니다.
'프로그래밍 팁 > Swift' 카테고리의 다른 글
1-10. Swift - 타입 앨리어스(Type Aliases) 문법 개념 정리 (0) | 2020.11.08 |
---|---|
1-9. Swift - 숫자 타입 변환(Numeric Type Conversion) 문법 개념 정리 (1) | 2020.11.07 |
1-7. Swift - 타입 세이프티와 타입 추론(Type Safety and Type Inference) 문법 개념 정리 (0) | 2020.11.05 |
1-6. Swift - 부동소수점(Floating-point numbers) 문법 개념 정리 (0) | 2020.11.04 |
1-5. Swift - 정수(Integers) 문법 개념 정리 (0) | 2020.11.03 |
댓글