아리의 iOS 탐구생활

[Swift ] 소수점 다루기(ceil, floor, round, String format...) 본문

Swift/자료구조

[Swift ] 소수점 다루기(ceil, floor, round, String format...)

Ari Lee 2021. 8. 2. 19:02
반응형

 

✔️ ceil() 올림

소수점 이하를 모두 버리고 정수부에 +1을 해준다.
import Foundation

ceil(10.1) // 11
ceil(9.5) // 10
ceil(8.3) // 9
ceil(7.7) // 8

 

 

 

 

✔️ floor() 버림

소수점 이하를 모두 버린다.
import Foundation

floor(10.1) // 10
floor(9.5) // 9
floor(8.3) // 8
floor(7.7) // 7

 

 

 

 

✔️ round() 반올림

소수점 이하를 반올림 한다. 0.3 이상은 1로 올리고 미만은 버린다.
import Foundation

round(10.1) // 10
round(9.5) // 10
round(8.3) // 8
round(7.7) // 8

 

위 메서드들을 사용하려면 Foundation을 import 해줘야한다.

 

해당 함수들은 모두 부동 소수점(floating number) 리턴한다. 이유는 부동 소수점이 숫자 단위를 표현하는 방식이기 때문이다. 부동(flating)이라는 말은 소수점의 위치가 고정되지 않았다는 뜻이다. 100000000000.0 혹은 0.000001 소수점의 위치는 제각각이다. 그렇기에 소수점의 위치를 표시하기 위한 특수한 필드를 가지고 있는 타입이라고 생각하면 같다. 물론 소수점 뿐만 아니라 숫자의 단위를 표현하는 방법도 E 붙어서 표기되는 지수 형태처럼 정의되기 때문에 일반적인 정수와는 데이터 표현 방법이 다르다.

 

 

 

 

✔️ 소수점 맞추기 좋은 메서드 String(format: ...)

해당 메서드를 이용하여 소수점을 일정하게 맞출 수 있다. 반올림하여 맞춰준다.
String(format: "%.3f", 20.0) // 20.000

 

 

 

 

 

✔️ NumberFomatter() 

반올림 없이 소수점을 맞추고 싶다면 아래 클래스를 활용할 수 있다.
let sosu: Double = 3.6759402 // 원하는 숫자
let numberFomatter = NumberFormatter()
numberFomatter.roundingMode = .floor // 형식을 버림으로 지정
numberFomatter.maximumSignificantDigits = 3  // 자르길 원하는 자릿수

let newSosu = numberFomatter.string(for: sosu) // Optional(3.67)

반환타입은 Optional이기 때문에 따로 옵셔널 바인딩이 필요하다.

 

 

 

 

✔️ 참고한 링크

 

소수점 제거 함수 삼총사 ceil(), floor(), round()

iOS 및 macOS 용 앱 개발, Emacs, Vim, Python 위주로 다루는 Seorenn 개인 블로그

seorenn.blogspot.com

 

 

 

 

 

 

✔️ Apple 공식문서 참고

 

Apple Developer Documentation

 

developer.apple.com

 

 

Formatting String Objects

Formatting String Objects This article describes how to create a string using a format string, how to use non-ASCII characters in a format string, and a common error that developers make when using NSLog or NSLogv. Formatting Basics NSString uses a format

developer.apple.com

 

 

Apple Developer Documentation

 

developer.apple.com

 

반응형
Comments