NumberFormatter

jeongmuyamette·2025년 2월 26일

TIL

목록 보기
53/72
post-thumbnail
   func convertToCurrencyFormat(price: Int) -> String {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .decimal
        numberFormatter.maximumFractionDigits = 0
        numberFormatter.string(from: NSNumber(value: price))
        let result = numberFormatter.string(from: NSNumber(value: price))!
        return result
    }

주어진 함수 convertToCurrencyFormat은 정수 값(price)을 받아서 숫자를 통화 형식처럼 표시하는 문자열로 변환하는 기능을 합니다. 하나씩 차근차근 설명해볼게요. 😊


함수 선언

func convertToCurrencyFormat(price: Int) -> String {
  • func: Swift에서 함수를 선언할 때 사용하는 키워드입니다.
  • convertToCurrencyFormat: 함수 이름으로, 이 함수는 숫자를 통화 형식으로 변환하는 역할을 합니다.
  • price: Int: 함수의 매개변수로, 정수(Int) 값을 입력받습니다. price는 변환하려는 숫자를 의미합니다.
  • -> String: 함수의 반환 타입으로, 최종적으로 문자열(String)을 반환합니다.

1. NumberFormatter 생성

let numberFormatter = NumberFormatter()
  • NumberFormatter: 숫자를 다양한 형식으로 변환(예: 통화, 소수점 조정 등)할 수 있는 클래스입니다.
  • numberFormatter: NumberFormatter의 인스턴스를 생성하여 사용합니다.

2. 숫자 스타일 설정

numberFormatter.numberStyle = .decimal
  • numberStyle: NumberFormatter의 속성으로, 숫자를 어떤 형식으로 표시할지 설정합니다.
  • .decimal: 숫자를 소수점이 없는 일반 숫자 형식으로 표시합니다. 예를 들어, 10000001,000,000처럼 쉼표로 구분된 형식으로 변환합니다.

3. 최대 소수점 자리 설정

numberFormatter.maximumFractionDigits = 0
  • maximumFractionDigits: 숫자에서 표시할 최대 소수점 자리 수를 설정합니다.
  • 0: 소수점 이하 자릿수를 표시하지 않도록 설정합니다. 예를 들어, 1234.561234로 표시됩니다.

4. 숫자를 문자열로 변환

let result = numberFormatter.string(from: NSNumber(value: price))!
  • numberFormatter.string(from:): 숫자를 문자열로 변환하는 메서드입니다.
    • NSNumber(value: price): price 값을 NSNumber로 변환합니다. NumberFormatterNSNumber 타입을 필요로 하기 때문입니다.
    • !: 강제 언래핑으로, 반환값이 nil이 아님을 보장합니다. (이 부분은 안전하지 않을 수 있으므로 개선이 필요할 수 있습니다.)
  • result: 변환된 결과 문자열이 저장됩니다.

예를 들어, price1000000이라면, result"1,000,000"이 됩니다.


5. 결과 반환

return result
  • 최종적으로 변환된 문자열(result)을 반환합니다.

전체 흐름 요약

  1. price 값을 입력받습니다.
  2. NumberFormatter를 생성하고, 숫자를 쉼표로 구분된 형식으로 변환하도록 설정합니다.
  3. 소수점 이하 자릿수는 표시하지 않도록 설정합니다.
  4. price 값을 문자열로 변환합니다.
  5. 변환된 문자열을 반환합니다.

예제 실행

let formattedPrice = convertToCurrencyFormat(price: 1234567)
print(formattedPrice) // 출력: "1,234,567"

개선할 수 있는 부분

  1. 강제 언래핑(!) 제거
    강제 언래핑은 안전하지 않은 방식입니다. 옵셔널 바인딩을 사용하면 더 안전합니다.

    func convertToCurrencyFormat(price: Int) -> String {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .decimal
        numberFormatter.maximumFractionDigits = 0
        
        if let result = numberFormatter.string(from: NSNumber(value: price)) {
            return result
        } else {
            return "Invalid Number"
        }
    }
  2. 통화 스타일 지원
    숫자를 단순히 쉼표로 구분하는 대신, 통화 기호(₩, $, € 등)를 추가하려면 numberStyle.currency로 설정할 수 있습니다.

    numberFormatter.numberStyle = .currency
    numberFormatter.currencySymbol = "₩" // 원하는 통화 기호 설정

0개의 댓글