소피it블로그
[Swift 공식문서] The Basics 정리 (5) - Numeric Literals, Numeric Type Conversion 본문
개발_iOS/스위프트
[Swift 공식문서] The Basics 정리 (5) - Numeric Literals, Numeric Type Conversion
sophie_l 2022. 5. 12. 10:00https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
The Basics — The Swift Programming Language (Swift 5.6)
The Basics Swift is a new programming language for iOS, macOS, watchOS, and tvOS app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift provides its own versions of all fundamental
docs.swift.org
1. Numeric Literals
- 정수 타입은 소수(decimal), 2진수, 8진수, 16진수로 나타낼 수 있다.
- 2진수는 앞에 0b, 8진수는 0o, 16진수는 0x를 붙여준다.
- 실수 타입은 소수(decimal) 혹은 16진수로 나타낼 수 있고, 16진수의 경우 앞에 0x를 붙여준다.
- 실수 타입은 소수점 앞뒤로 반드시 숫자가 있어야 한다.
- decimal 실수는 지수(exponent)를 취할 수 있는데, 대문자 혹은 소문자의 e를 사용한다.
1.25e2 means 1.25 x 10^2, or 125.0
1.25e-2 means 1.25 x 10^(-2), or 0.0125
- 16진수 실수는 반드시 지수를 취해야 하며, 대문자 혹은 소문자 p를 사용한다.
0xFp2 means 15 x 2^2, or 60.0
0xFp-2 means 15 x 2^(-2), or 3.75
- 정수 타입, 실수 타입은 가독성을 위해 추가로 0을 붙여도 되고, 1000 단위로 (컴마 대신) _(underscore)를 붙여도 된다.
2. Numeric Type Conversion
통일성과 사용성을 위해 웬만하면 정수형 상수, 변수는 Int로 통일하라. 다른 정수 타입은 반드시 써야 할 경우에만 써라.
- Integer Conversion: 여러 정수 타입은 각각 저장할 수 있는 수의 범위가 다르다. UInt8과 Int8이 다르고, UInt8과 UInt16 또한 다르다. 따라서 서로 다른 타입끼리 연산을 하기 위해서는 하나의 타입으로 통일해줘야 한다. SomeType(ofInitialValue)의 형식으로 타입 변환을 해줄 수 있는데, 아무 타입이나 가능한 것은 아니고 SomeType이 이니셜라이저를 제공하는 경우에 한한다.
let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousandAndOne = twoThousand + UInt16(one)
- Integer and Floating-Point Conversion: 스위프트에서는 정수형 상수 / 변수와 실수형 상수 / 변수의 연산을 허용하지 않기 때문에 연산에 앞서 반드시 타입을 변환해줘야 한다. 실수형을 정수형으로 변환할 때는 소숫점 뒤를 버림한다.
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine
// pi equals 3.14159, and is inferred to be of type Double
let integerPi = Int(pi)
// integerPi equals 3, and is inferred to be of type Int
또한 주의할 점은, 숫자형 상수와 변수의 연산과 numeric literals 즉 숫자 자체의 연산은 다르다는 것이다. 3이라는 literal value는 0.14159라는 또 다른 literal value에 직접적으로 더해질 수 있다. number literals 그 자체는 explicit한 타입이 없기 때문. 컴파일러가 점검할 때에 타입이 추론되는 것이다.
'개발_iOS > 스위프트' 카테고리의 다른 글
[Swift 공식문서] The Basics 정리 (7) - Optionals (0) | 2022.05.14 |
---|---|
[Swift 공식문서] The Basics 정리 (6) - Type Aliases, Booleans, Tuples (0) | 2022.05.12 |
[Swift 공식문서] The Basics 정리 (4) - Type Safety and Type Inference 타입 세이프티와 타입 추론 (0) | 2022.05.10 |
[Swift 공식문서] The Basics 정리 (3) - Integers, Floating-Point Numbers 정수, 실수 (0) | 2022.05.10 |
[Swift 공식문서] The Basics 정리 (2) - Comments, Semicolon 주석, 세미콜론 (0) | 2022.05.09 |