숫자를 문자열로 반환

썹스·2022년 12월 10일
0

Swift 문법

목록 보기
51/68

숫자를 문자열로 반환

단순하게 숫자를 문자열로 반환하는 방법은 매우 간단합니다.
문자열 보간법(String Interpolation) \( )을 사용하면 간단하게 문자열로 반환 가능

하지만 원주율(π) 같은 무한소수 또는 소숫자리가 긴 숫자를 문자열로 반환해야 할 때는 반올림과 같은 특정 작업을 취해야 합니다.

이러한 작업은 크게 "출력 형식 지정자(Format Specifiers)""NumberFormatter 클래스"를 이용하는 방법이 있습니다.


📌 출력 형식 지정자(Format Specifiers)

문자열(String)의 다양한 생성자 중 String(format: "자릿수", 변수)을 사용하면 원하는 형식의 숫자 값을 얻을 수 있습니다.

✅ 소숫자리의 형식 지정

String(format: "%원하는 소수점f", 변수)

var pi =  3.141592653589793

print("원주율: \(pi)")  // 원주율: 3.141592653589793
print("원주율: \(String(format: "%.2f", pi))")  // 반올림해서 소수 두 번째 자리까지
print("원주율: \(String(format: "%.3f", pi))")  // 반올림해서 소수 세 번째 자리까지
print("원주율: \(String(format: "%010.3f", pi))") // 10자리로 + 공백은 0으로 + 반올림해서 소수 세 번째 자리까지 출력


/*출력 결과
 원주율: 3.141592653589793
 원주율: 3.14
 원주율: 3.142
 원주율: 000003.142         // 소수점 (.) 포함 10자리
 */

✅ 정수의 형식 지정

String(format: "%원하는 자릿수d", 변수)

var n =  5
print("숫자: \(n)")  // 일반적인 출력
print("숫자: \(String(format: "%2d", n))")   // 두 자리로 출력
print("숫자: \(String(format: "%3d", n))")   // 세 자리로 출력
print("숫자: \(String(format: "%03d", n))")  // 세 자리로 + 공백은 0으로 출력

/*출력 결과
 숫자: 5
 숫자:  5
 숫자:   5
 숫자: 005
 */

또한 String(format: "자릿수", 변수) 생성자는 숫자뿐만 아니라 문자열의 형식도 변환할 수 있습니다.

✅ 문자열의 형식 지정

String(format: "문자%@", 변수)

var name = "수"
print(String(format: "김철%@", name))  // 김철수

문자열의 할당 순서를 지정할 수도 있습니다.
String(format: "%n$@ %m$@", n변수, m변수)

var firstName = "철수"
var secondName = "김"

print(String(format: "%1$@ %2$@", firstName, secondName))  // 철수 김
print(String(format: "%2$@ %1$@", firstName, secondName))  // 김 철수

📌 NumberFormatter 클래스

NumberFormatter 클래스는 숫자를 문자열로 변환해주는 클래스입니다.

NumberFormatter 클래스 내부에 정의된 속성을 사용하는 방식으로 간편하게 사용할 수 있다는 장점이 있습니다.

NumberFormatter 클래스 내부에 정의된 속성은 아래와 같습니다.

설정 가능한 속성속성 기능
.roundingMode반올림 모드
.maximumSignificantDigits최대자릿수
.minimumSignificantDigits최소자릿수
.numberStyle숫자 스타일

⚙️ 반올림의 종류(NumberFormatter().roundingMode)

소수점의 처리 케이스소수점 처리 기능
.up절댓값이 큰 쪽으로 반올림
.down절댓값이 작은 쪽으로 반올림
.ceiling소수점에 상관없이 반올림
.floor소수점에 상관없이 반내림
.halfUp반올림
.halfDown반내림
.halfEven짝수가 될 수 있도록 반올림

✅ 숫자의 소수를 반올림

var x = 123.4567
var y = -123.4567

var numFor = NumberFormatter()
numFor.roundingMode = .ceiling

numFor.string(for: x)  // "124"
numFor.string(for: y)  // "-123"

⚙️ 숫자 스타일의 종류(NumberFormatter().numberStyle)

숫자 스타일의 케이스기능
.currency달러($) 단위로 + 쉼표( , )를 사용하여 10진법 형식으로 표현
.decimal쉼표( , )를 사용하여 10진법 형식으로 표현
.percent퍼센트(%) 단위로 + 쉼표( , )를 사용하여 10진법 형식으로 표현

이 외에도 많은 종류의 스타일이 있습니다.

✅ 숫자 스타일을 변형

var x = 1234567
var y = -1234567

var numFor = NumberFormatter()
numFor.numberStyle = .decimal

numFor.string(for: x)  // "1,234,567"
numFor.string(for: y)  // "-1,234,567"
profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글