안녕하세요. 개발하는 정주입니다.
오늘은 NumberFormatter에 대해 포스팅하려고 합니다.
NumberFormatter는 굉장히 실용성이 높은 기능 중 하나인데요. 대표적으로 소수의 소수점 개수를 설정하거나 돈을 나타낼 때처럼 할 때 세 자리마다 콤마를 찍을 수 있습니다.
바로 알아보도록 하겠습니다.
공식 문서
애플의 공식 문서를 먼저 보겠습니다.
https://developer.apple.com/documentation/foundation/numberformatter/
"A formatter that converts between numeric values and their textual representations."라고 되어있네요. 파파고의 힘을 빌려 번역해보면 "숫자 값과 텍스트 표현 사이를 변환하는 포맷터입니다."라고 합니다.
관련 메소드를 보면 설명과 동일하게 String을 옵셔널 NSNumber로, NSNumber를 옵셔널 String으로 변환할 수 있다는 것을 알 수 있습니다.
또하나의 특징으로는 NumberFormatter와 numberFormatter가 따로 존재한다는 것인데요. 이번 포스팅에서 알아볼 NumberFormatter는 Swift만 Documentation이 존재합니다. 둘의 차이점은 아직까진 잘 모르겠습니다.
시간이 날 때 더 알아봐야겠습니다.
소수점 설정
import Foundation //NumberFormatter를 사용하려면 import해야 함
let value = 10.12545 //변환해볼 변수
let numberFormatter = NumberFormatter() //NumberFormatter 객체 생성
numberFormatter.maximumFractionDigits = 2 //소수점 두 자리까지 표시
let result = numberFormatter.string(for: value) ?? "0" //옵셔널 이므로 Default 설정. 혹은 강제 언래핑해도 됨.
print("Before: \(value)\nAfter: \(result)")
//결과
// Before: 10.12345
// After: 10.13
NumberFormatter 객체의 maximumFractionDigits 속성을 이용하여 최대 소수점 자릿수를 설정할 수 있습니다.
2로 설정하면 소수점 두 자리까지 출력되며 기본 설정은 반올림입니다.
return형이 옵셔널이므로 ?? 키워드를 이용해 Default값을 설정하거나 ! 키워드를 이용해 강제 언래핑하여 사용하면 됩니다.
세 자리마다 콤마(,) 표시하기
import Foundation //NumberFormatter를 사용하려면 import해야 함
let value = 100000 //변환해볼 변수
let numberFormatter = NumberFormatter() //NumberFormatter 객체 생성
numberFormatter.numberStyle = .decimal
let result = numberFormatter.string(for: value) ?? "0" //옵셔널 이므로 Default 설정. 혹은 강제 언래핑해도 됨.
print("Before: \(value)\nAfter: \(result)")
//결과
// Before: 100000
// After: 100,000
NumberFormatter를 이용하면 숫자 형식도 정할 수 있습니다.
설정할 수 있는 형식 종류도 공식 문서에서 확인할 수 있습니다.
상황에 맞게 형식을 지정하여 사용하면 될 듯 합니다.
감사합니다.
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.