반응형
[iOS/Swift] 소수 올림(ceil), 버림(floor), 반올림(round) 설정하기
안녕하세요. 개발하는 정주입니다.
오늘은 소수점 처리에 대해 포스팅하려고 합니다. 대표적인 세 가지 처리인 올림, 버림, 반올림에 대해 알아보겠습니다.
소수 OO번 째 자리에서 처리하는 것이 아닌 무조건 정수부만 처리하는 방법은 더 간단한 메서드가 존재하니 아래에서 확인해 주세요.
그럼 시작합니다.
정수부만 처리하기
무조건 소수 부분을 0으로 만들고 정수부만 살리는 방법입니다.
import Foundation
let value = 10.12545 //변환해볼 변수
print(ceil(value)) //올림. 소수점 이하를 모두 버리고 정수부에 +1
print(floor(value)) //버림. 소수점 이하를 모두 버림.
print(round(value)) //반올림. 소수점 이하를 반올림
//결과
// 11.0
// 10.0
// 10.0
각 메소드의 설명은 주석으로 작성하였습니다.
심플한 메소드이니 자세한 설명은 필요 없을 것 같네요.
소수 부분 살리기
소수 부분을 살려서 올림, 버림, 반올림을 하고 싶을 때가 있습니다. 이럴 때는 수식으로 계산하는 방법도 있지만 NumberFormatter를 이용하면 간단합니다.
NumberFormatter이 무엇인지는 저번 포스팅에서 다뤘으니 이번 포스팅에서는 코드만 보도록 하겠습니다.
이번 포스팅 보기
import Foundation
let value = 10.12545 //변환해볼 변수
let numberFormatter = NumberFormatter() //NumberFormatter 객체 생성
numberFormatter.maximumFractionDigits = 2
numberFormatter.roundingMode = .ceiling
let result = numberFormatter.string(for: value) ?? "0" //옵셔널 이므로 Default 설정. 혹은 강제 언래핑해도 됨.
print("Before: \(value)\nAfter: \(result)")
//결과
// Before: 10.12545
// After: 10.13
NumberFormatter의 roundingMode 속성을 이용하면 소수점 처리를 할 수 있습니다.
위 코드는 여러 속성 중 ceiling을 하는 코드입니다.
roundingMode 속성의 종류는 공식문서에 나와 있는 위 표를 확인해 주세요.
마무리 잡담
오늘은 다양한 소수점 처리 방식에 대해 알아보았습니다.
NumberFormatter는 다시 봐도 매력적인 객체인 것 같습니다.
감사합니다!
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형