일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dispatchsource
- WeatherManager
- UIAlertAction
- App Store Connect
- 러닝타이머
- SwiftUI Boolean 값
- CoreLocation
- 클로저의 캡슐화
- Protocol
- 단일 책임원칙
- font book
- 러닝기록앱
- weak var
- Xcode
- 한국어 개인정보처리방침
- weatherKit
- xcode로 날씨앱 만들기
- CLLocationManagerDelegate
- Required Reason API
- swift
- addannotation
- Timer
- MKMapViewDelegate
- AnyObject
- 서체관리자
- Startign Assignments
- UICollectionViewFlowLayout
- 영문 개인정보처리방침
- MKMapItem
- RunningTimer
- Today
- Total
VesselWheel
Double 타입의 숫자를 화폐단위로 표시하기(ex. 5,000원) 본문
정수 값에 세자리수 마다 콤마를 넣는 방법으로 .numberStyle을 .decimal로 저장한다.
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let result = numberFormatter.string(from: NSNumber(value: 1000000))
print(result! + "원")
<NumberFormatter() 내장 클래스를 이용하여 .decimal로 천의 자리 단위로 ' , ' 표시하는 방법>
Double 타입에 대한 확장(extension)으로, "formattedString()"이라는 메소드
extension Double {
func formattedString() -> String {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.minimumFractionDigits = 0
if let formattedString = numberFormatter.string(from: NSNumber(value: self)) {
return formattedString
} else {
return "\(self)"
}
}
}
이 코드는 Double 타입에 대한 확장(extension)으로, "formattedString()"이라는 메소드를 추가하는 역할을 합니다. 이 메소드는 Double 값을 포맷팅하여 천 단위마다 점을 찍어주는 기능을 제공합니다.
구체적으로는, NumberFormatter 클래스를 사용하여 숫자 포맷을 설정합니다.
numberStyle 속성을 .decimal로 설정하여 숫자를 천 단위로 구분하는 포맷을 지정합니다. minimumFractionDigits 속성을 0으로 설정하여 소수점 이하 자리수를 0으로 표시합니다.
그리고, numberFormatter.string(from:) 메소드를 사용하여 현재 Double 값(self)을 NSNumber로 변환한 뒤, 해당 NSNumber를 포맷에 맞게 문자열로 변환합니다. 변환된 문자열을 반환합니다.
만약 변환된 문자열이 nil이라면, 즉 변환에 실패한 경우에는 "(self)"를 사용하여 기본적인 문자열 표현을 반환합니다.
이렇게 구현된 formattedString() 메소드를 호출하면, 해당 Double 값이 천 단위마다 점으로 구분된 문자열로 반환됩니다.
기존에 더블값을 Int으로 변환하고, String으로 변환한 모습
func configure(with item: SpabucksMenuItem) {
imageView.image = UIImage(named: item.imageName)
nameLabel.text = item.name
priceLabel.text = String("\(Int(item.price)) 원")
}
}
formattedString() 매소드를 호출하여 변환한 모습
// MARK: - Action Helpers
func configure(with item: SpabucksMenuItem) {
imageView.image = UIImage(named: item.imageName)
nameLabel.text = item.name
priceLabel.text = "\(item.price.formattedString()) 원"
}
}
'Xcode Study' 카테고리의 다른 글
클로저로 만드는 타이머 매서드(feat. 비동기화) (1) | 2024.01.04 |
---|---|
UIAlertController를 이용한 alert창 띄우기 (1) | 2024.01.03 |
UICollectionView의 UICollectionViewFlowLayout (0) | 2024.01.02 |
OrderListView와 MenuView 간의 데이터 연결(feat. 델리게이트, 약한참조) (0) | 2024.01.02 |
CollectionView를 활용한 키오스크 메뉴화면 만들기(feat. 코드 베이스) (1) | 2023.12.31 |