ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift) 소수점 다루기
    Swift 2019. 7. 22. 22:01

    Swift 에서 소수점을 조작하려면 어떻게 해야할까요? 매번 헷갈리는 이 녀석들 제대로 한번 알아보죠!

    이번 포스팅의 목표는 이녀석을 풀어보는겁니다! 어려운 문제는 아니지만 이번 포스팅을 다 읽고 저 문제를 수월하게 푸신다면 제 목표는 성공이겠네요 :D


    Swift 에서 대표적인 소수점 관련 함수 3개가 있습니다.

    ceil()

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

    floor()

    소수점 이하를 모두 버립니다.

    round()

    소수점 이하를 반올림합니다. 0.5 이상은 1로 올리고 미만은 버립니다.

    위 함수들은 Foundation 를 import 해줘야 합니다.

     

    활용

    여기까진 알겠는데 한 가지 궁금한 점이 있으실겁니다. 그럼 특정 소수점까지에 대해 적용하고 싶으면 어떻게 하지? 제가 알기론 따로 제공하는 기능은 없는 것 같습니다. 당연히 있어야 할 기능인데 Swift 에서는 왜 지원하지 않을까요? 제 생각엔 간단한 조작으로 사용이 가능하기 때문이 아닐까 싶습니다.

    혹시 있다면 댓글로 알려주시면 감사하곘습니다!

     

    위 3가지 함수만 사용할 수 있는데, 소수점 3자리까지 반올림하고 싶다면 어떻게 해야할까요?

    let input = 10.52834213
    let roundedNum = round(input * 1000) / 1000

    1000을 곱하는 것처럼 원하는 소수점 자리수까지 정수부로 올린 다음! round를 적용해주고 다시 그만큼 나눠주면 됩니다. 다음과 같이 간단한 조작으로 소수점 3자리까지 반올림 할 수가 있습니다!

     

    표현

    소수점을 조작하는 방법을 알아봤어요. 하지만 아직 조금 문제가 남아있습니다. 이러한 방식만으로는 항상 소수점을 일정하게 맞출 수가 없다는 것이 문제입니다.

    소수 3자리까지 표현하고 싶은데 이미 소수 1자리에서 수가 끝나버렸다면?

    위의 방식만으로는 이를 표현할 수가 없습니다. 그래서 소수점을 일정하게 맞춰보는 String format을 알아볼까해요.

    방법은 간단합니다! 위의 String format을 사용하면 됩니다. 바로 예를 살펴보죠!

    String(format: "%.3f",  40.0) // 40.000

    다음과 같이 %. 뒤에 원하는 소수점 자리수를 써주고 arguments 부분에 원하는 값을 넣어주면 됩니다!!

    여기까지 이해하셨다면 연습삼아 위의 문제를 한번 풀어보시면 좋을 듯 합니다^^

    조금이라도 도움이 되셨다면 좋겠네요! 감사합니다 XD

     

    참고

    http://seorenn.blogspot.com/2018/02/ceil-floor-round.html

    'Swift' 카테고리의 다른 글

    KVO(Key-Value-Observing)  (0) 2019.09.20
    Swift) 배열의 중복체크  (0) 2019.07.25
    Swift) 스위프트에서 '모든 것은 객체다'  (1) 2019.07.02
    열거형 (Enumerations)  (0) 2019.06.26
    Swift) 집합 (Set)  (0) 2019.05.18

    댓글

Designed by Tistory.