안녕하세요
개발을 하면서 느끼지만 반올림, 내림, 올림 같이 소수점처리하는 방식은 할 때마다 까먹어서 맨날 구글링을 하는 느낌입니다 ㅠ
이번 포스팅에서는 자바에서 소수점 자릿수를 반올림하는 방법에 대해서 알아보겠습니다!
Math.Round()
Math.Round() 방식입니다.
제일 무난한 방식입니다.
이 방식은 계산식에서 반올림을 해야하는 경우 맞는 방식이라 할 수 있습니다
다른 언어에서는 몇 번째 소수점까지 지정해서 반올림을 할 수 있지만 하나의 파라미터를 넘겨서 첫 번째 단위로만 반올림이 가능합니다
예제
public class RoundingOff {
public static void main(String[] args) {
float a = 3.1415926535f;
System.out.println("첫 번째 : " + Math.round(a));
System.out.println("두 번째 : " + Math.round(a*100) / 100.0);
System.out.println("세 번째 : " + Math.round(a*10000) / 10000.0);
}
}
결과 화면
첫 번째는 소수점 첫 번째 자릿수에서 반올림하여 3이 결과로 나왔습니다
두 번째는 소수점 세 번째 자릿수에서 반올림하여 3.14가 결과로 나왔습니다
소수점의 반올림을 하고 싶은 경우 100을 곱한 값을 반올림 한 후 100.0으로 실수를 나누어 구해줘야합니다
세 번째는 소수점 다섯 번째 자릿수에서 반올림하여 3.1416이 결과로 나왔습니다
String.Format()
두 번째 방법은 String.Format() 방식입니다
이 방법은 결과화면을 String형태로 받고 싶은 경우 맞는 방법입니다
예제
String.Format의 첫 번째 파라미터는 String으로 변환 시 포맷을 입력합니다
두 번째 파라미터를 값을 넘겨주면 됩니다
public class RoundingOff {
public static void main(String[] args) {
float a = 3.1415926535f;
System.out.println("첫 번째 : " + String.format("%.0f", a));
System.out.println("두 번째 : " + String.format("%.2f", a));
System.out.println("세 번째 : " + String.format("%.4f", a));
}
}
결과 화면
첫 번째 방식은 "%.0f"를 하여 첫 번째 소수점자리수에서 반올림을 한 결과가 나옵니다
두 번째 방식은 "%.2f"를 하여 세 번째 소수점자리수에서 반올림을 한 결과가 나옵니다
세 번째 방식은 "%.4f"를 하여 다섯 번째 소수점자리수에서 반올림을 한 결과가 나옵니다
속도 비교
두 개의 메소드를 10000번 돌렸을 때의 속도비교입니다
public class RoundingOff {
public static void main(String[] args) {
float a = 3.1415926535f;
float fl;
String str;
long startTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++) {
str = String.format("%.0f", a);
}
long step1 = System.currentTimeMillis();
System.out.println((step1-startTime) + "(ms)");
long step2 = System.currentTimeMillis();
for(int i = 0; i < 10000; i++) {
fl = Math.round(a);
}
long step3 = System.currentTimeMillis();
System.out.println((step3-step2) + "(ms)");
}
}
결과
속도는 Math.round방식이 String.format 방식보다 더 빠른 것을 볼 수 있습니다
만약 대용량의 계산을 수행하는 경우에는 Math.round 방식을 쓰는 것이 더 좋을 것 같습니다
여기까지 자바에서 Math.Round와 String.format을 사용하여 소수점 반올림을 하는 방법에 대해서 알아봤습니다
만약 틀린 부분이 있다면 댓글 부탁드립니다!!
자바를 공부하는 분들께 제 포스팅이 도움이 되었으면 좋겠습니다
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 메서드(Method)란?? (0) | 2021.05.12 |
---|---|
[JAVA] 이클립스 자동 줄 맞춤 (0) | 2021.05.10 |
[JAVA] double와 float의 차이점 (0) | 2021.05.05 |
[JAVA] Window10의 JAVA SE 11 설치하기 (6) | 2021.05.05 |
[JAVA] HashSet이란? & 사용법 정리 (0) | 2021.05.04 |