반응형
PS를 하다 보면 반올림, 올림, 내림, 버림 등 소수점을 제거해서 출력해야 할 때가 종종 있다. 찾아보다가 이 모든 것을 전부 할 수 있는 만능 메소드를 찾았다!
FloatingPoint 프로토콜에 정의된 round(_:)라는 메소드이다. 기본 자료형인 Float과 Double 모두 FloatingPoint 프로토콜을 채택하고 있기 때문에 round 메소드 사용이 가능하다.
mutating func round(_ rule: FloatingPointRoundingRule)
형태는 mutating func round(_ rule: FloatingPointRoundingRule). 제거한 결과값을 리턴하는 게 아니라 mutating func이기 때문에 인스턴스 값 자체가 바뀐다. 따라서 immutable 한 값에는 메소드를 쓸 수 없다.
파라미터로 rule을 넘겨주면, 해당 룰을 적용하여 소수점을 제거해준다. 이 rule의 종류는 반올림, 올림 등 무려 6가지나 있다. 근데 영어라 뭔지 잘 모르겠다ㅎㅎ 하나씩 살펴볼 건데 말로 설명하는 것보다 그냥 예시를 보는 게 이해가 더 빠를 것 같다.
- awayFromZero
- down
- toNearestOrAwayFromZero
- toNearestOrEven
- towardZero
- up
awayFromZero
절댓값이 현재보다 크거나 같은 정수 중 가장 가까운 정수로 = 0에서 더 먼 쪽으로 내리거나 올림
(3.1).round(.awayFromZero) // 4.0
(3.9).round(.awayFromZero) // 4.0
(-3.1).round(.awayFromZero) // -4.0
(-3.9).round(.awayFromZero) // -4.0
down
현재보다 작거나 같은 정수 중 가장 가까운 정수로 = 내림
(3.1).round(.down) // 3.0
(3.9).round(.down) // 3.0
(-3.1).round(.down) // -4.0
(-3.9).round(.down) // -4.0
toNearestOrAwayFromZero
가장 가까운 정수로, 만약 두 개가 똑같이 가까우면 절댓값이 더 큰 쪽으로 = 반올림(.5에서는 0에서 더 먼 쪽으로)
(3.1).round(.toNearestOrAwayFromZero) // 3.0
(3.9).round(.toNearestOrAwayFromZero) // 4.0
(3.5).round(.toNearestOrAwayFromZero) // 4.0
(-3.1).round(.toNearestOrAwayFromZero) // -3.0
(-3.9).round(.toNearestOrAwayFromZero) // -4.0
(-3.5).round(.toNearestOrAwayFromZero) // -4.0
toNearestOrEven
가장 가까운 정수로, 만약 두 개가 똑같이 가까우면 짝수로 = (?)
(3.1).round(.toNearestOrEven) // 3.0
(3.9).round(.toNearestOrEven) // 4.0
(3.5).round(.toNearestOrEven) // 4.0
(2.5).round(.toNearestOrEven) // 2.0
(-3.1).round(.toNearestOrEven) // -3.0
(-3.9).round(.toNearestOrEven) // -4.0
(-3.5).round(.toNearestOrEven) // -4.0
(-2.5).round(.toNearestOrEven) // -2.0
towardZero
절댓값이 현재보다 작거나 같은 정수 중 가장 가까운 정수로 = 버림
(3.1).round(.towardZero) // 3.0
(3.9).round(.towardZero) // 3.0
(-3.1).round(.towardZero) // -3.0
(-3.9).round(.towardZero) // -3.0
up
현재보다 크거나 같은 정수 중 가장 가까운 정수로 = 올림
(3.1).round(.up) // 4.0
(3.9).round(.up) // 4.0
(-3.1).round(.up) // -3.0
(-3.9).round(.up) // -3.0
반응형
'Apple > Swift' 카테고리의 다른 글
[Swift] 진수 변환하기 (2진수, 8진수, 10진수, 16진수 등) (0) | 2022.01.17 |
---|---|
[Swift] 거듭제곱하기 (0) | 2022.01.15 |
[Swift] 배열 정렬하기 (0) | 2022.01.13 |
[Swift] 특정 값으로 초기화 된 특정 크기의 배열 생성하기 (0) | 2022.01.06 |
[Swift] 백준 스위프트로 풀기 - 프로젝트 생성, 입력 받는 법 (0) | 2022.01.05 |
댓글