길게 나열된 소수점이 있을 때 종종 둘째 자리 또는 셋째 자리까지만 소수점을 표기해야 할 때가 있습니다.
이번 글에서는 코틀린에서 소수점 표기하는 방법으로 String.format / DecimalFormat을 정리하려고 합니다.
또한 소수점을 표기할 때 올림, 반올림, 버림은 어떻게 적용되는지 살펴보려고 합니다.
소수점 표기방법 : String.format
String.format을 사용해서 원하는 소수점까지 표기하는 방법은 아래와 같습니다.
String.format("%.2f", floatValue) // 소수점 둘째 자리까지 표기
String.format("%.3f", floatValue) // 소수점 셋째자리까지 표기
아주 심플하게 사용이 가능한데요, 한 가지 주의사항이 있어요.
String.format으로 소수점을 표기했을 경우 반올림이 이루어집니다!
아래 결과처럼 말이죠.
val floatValue1 = 10.666666f
val floatValue2 = 10.555555f
val floatValue3 = 10.444444f
println("floatValue1 = " + String.format("%.2f", floatValue1)) // "floatValue1 = 10.67"
println("floatValue2 = " + String.format("%.2f", floatValue2)) // "floatValue2 = 10.56"
println("floatValue3 = " + String.format("%.2f", floatValue3)) // "floatValue3 = 10.44"
필자는 단순하게 소수점을 자르는 개념이라고 생각해서 버림이라고 생각했는데... 그렇지 않네요
숫자를 표기할 때 올림, 반올림, 버림이 어떻게 적용되는지는 굉장히 중요한 요소가 될 수 있어요.
String.format에서는 반올림 외에는 올림이나 버림을 직접적으로 제어할 수 있는 옵션은 제공되지 않는다고 합니다.
String format으로 소수점을 표기할 때 이를 인지한다면 좋을 것 같습니다.
소수점 표기방법 : DecimalFormat
DecimalFormat을 사용해서 원하는 소수점까지 표기하는 방법은 아래와 같습니다.
val decimalFormat = DecimalFormat("#.##") // 소수점 둘째 자리까지 표기
println("floatValue = " + decimalFormat.format(floatValue))
val decimalFormat = DecimalFormat("#.###") // 소수점 셋째 자리까지 표기
println("floatValue = " + decimalFormat.format(floatValue))
DecimalFormat은 어떨까요?
String.format과 마찬가지로 DecimalFormat도 기본적으로 반올림이 적용됩니다.
근데 String.format과 달리 DecimalFormat은 올림, 반올림, 버림과 같은 방식을 직접 제어할 수 있습니다!
아래 결과처럼 말이죠.
val floatValue1 = 10.666666f
val floatValue2 = 10.555555f
val floatValue3 = 10.444444f
val decimalFormat = DecimalFormat("#.##").apply {
roundingMode = RoundingMode.DOWN // 버림
}
println("floatValue1 = " + decimalFormat.format(floatValue1)) // "floatValue1 = 10.66"
println("floatValue2 = " + decimalFormat.format(floatValue2)) // "floatValue2 = 10.55"
println("floatValue3 = " + decimalFormat.format(floatValue3)) // "floatValue3 = 10.44"
DecimalFormat에서 소수점 이하 자릿수를 처리하는 방법으로 RoundingMode가 사용됩니다.
이렇게 특정 소수점 자릿수에 대한 올림, 버림을 제어해야 한다면 DecimalFormat을 활용하면 좋을 것 같습니다.
끝으로 RoundingMode에 어떤 종류가 있는지 간략하게 정리하고 마무리하겠습니다.
DecimalFormat RoundingMode
- RoundingMode.UP : 항상 올림
입력 결과 1.1 2 -1.1 -2 - RoundingMode.DOWN : 항상 내림
입력 결과 1.6 1 -1.6 -1 - RoundingMode.CEILING : 양수는 UP, 음수는 DOWN 처리
입력 결과 1.1 2 -1.6 -1 - RoundingMode.FLOOR : 양수는 DOWN, 음수는 UP 처리
입력 결과 1.6 1 -1.1 -2
'안드로이드 > 코틀린' 카테고리의 다른 글
안드로이드 화면 전환: Navigation 기능 사용법 및 예제 (2) | 2024.07.13 |
---|---|
코틀린 스레드 및 코루틴 중복 실행 방지 방법 (0) | 2024.05.14 |
코틀린 데이터 변경 감지 : 프로퍼티 위임(Delegated Properties) (0) | 2024.05.08 |
앱 백그라운드 상태 체크 : LifecycleEventObserver, DefaultLifecycleObserver (0) | 2024.05.07 |
안드로이드 캡처 효과 예제 : CaptureEffectView (0) | 2024.05.02 |
댓글