Java에서 소수점 이하 자리수를 조정하는 것은 다양한 프로그램에서 필수적인 기능입니다. 예를 들어, 금융 계산에서 소수점 두 자리까지 표시하거나, 특정한 자리수까지만 반올림해야 할 때가 있습니다.
Java에서는 Math 클래스와 BigDecimal 클래스를 활용하여 소수점 처리를 쉽게 할 수 있습니다. 이 글에서는 소수점 반올림, 올림, 내림, 버림 등 다양한 방법을 코드 예제와 함께 소개하겠습니다
Math.round()로 반올림하기
Math.round() 메서드는 가장 간단한 반올림 방법입니다.
📌 소수점 첫째 자리에서 반올림하는 예제:
public class RoundingExample {
public static void main(String[] args) {
double num = 3.567;
long rounded = Math.round(num); // 소수점 첫째 자리에서 반올림
System.out.println("반올림 결과: " + rounded); // 출력: 4
}
}
✔ Math.round(3.567) → 4로 반올림됩니다.
✔ 기본적으로 소수점 첫째 자리에서 반올림하는 특징이 있습니다.
Math.ceil()로 올림하기
Math.ceil()은 항상 올림(반올림이 아니라 무조건 큰 값으로 올림) 처리를 합니다.
📌 소수점 올림 예제:
public class CeilExample {
public static void main(String[] args) {
double num = 3.14;
double ceilValue = Math.ceil(num);
System.out.println("올림 결과: " + ceilValue); // 출력: 4.0
}
}
✔ Math.ceil(3.14) → 4.0으로 올림됩니다.
✔ 무조건 큰 정수로 올림이 되기 때문에, 특정 자리에서 반올림을 원하는 경우에는 사용하지 않습니다.
Math.floor()로 내림(버림)하기
Math.floor()는 항상 내림(작은 값으로 버림) 합니다.
📌 소수점 내림 예제:
public class FloorExample {
public static void main(String[] args) {
double num = 3.98;
double floorValue = Math.floor(num);
System.out.println("내림 결과: " + floorValue); // 출력: 3.0
}
}
✔ Math.floor(3.98) → 3.0으로 내림됩니다.
✔ 항상 작은 정수로 변환되기 때문에, 특정 자리에서 반올림을 원할 경우 적절하지 않습니다.
BigDecimal을 이용한 소수점 자리수 제한
금융 계산처럼 정확한 소수점 처리가 필요할 때는 BigDecimal을 사용하는 것이 좋습니다.
📌 소수점 둘째 자리까지 반올림하는 예제:
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalExample {
public static void main(String[] args) {
BigDecimal num = new BigDecimal("3.56789");
BigDecimal roundedNum = num.setScale(2, RoundingMode.HALF_UP);
System.out.println("소수점 둘째 자리 반올림: " + roundedNum); // 출력: 3.57
}
}
✔ setScale(2, RoundingMode.HALF_UP) → 소수점 둘째 자리에서 반올림됩니다.
✔ RoundingMode.HALF_UP은 일반적인 5에서 반올림하는 방식입니다.
✔ BigDecimal을 사용하면 정확한 계산이 가능하여 금융 프로그램에서 자주 활용됩니다.
📌 다양한 RoundingMode 옵션:
- RoundingMode.UP → 무조건 올림
- RoundingMode.DOWN → 무조건 버림
- RoundingMode.HALF_UP → 일반적인 반올림(5 이상 올림)
- RoundingMode.HALF_DOWN → 5일 경우 버림
- RoundingMode.HALF_EVEN → 은행가 반올림 방식
특정 자리수에서 반올림하는 사용자 정의 함수
자주 사용되는 소수점 처리를 위한 유틸리티 메서드를 만들어 활용할 수도 있습니다.
📌 소수점 n번째 자리에서 반올림하는 메서드:
public class RoundUtil {
public static double round(double value, int places) {
if (places < 0) throw new IllegalArgumentException("소수점 자리수는 0 이상이어야 합니다.");
BigDecimal bd = new BigDecimal(Double.toString(value));
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}
public static void main(String[] args) {
System.out.println("소수점 둘째 자리 반올림: " + round(3.56789, 2)); // 출력: 3.57
}
}
✔ round(3.56789, 2) → 3.57 (소수점 둘째 자리에서 반올림)
✔ 여러 자리수에서도 사용할 수 있도록 유연한 코드입니다.
결론 (Conclusion)
Java에서 소수점 이하 자르기(반올림, 내림, 버림) 방법을 정리하면 다음과 같습니다.
✔ Math.round() → 기본 반올림(소수 첫째 자리 기준)
✔ Math.ceil() → 무조건 올림
✔ Math.floor() → 무조건 내림(버림)
✔ BigDecimal → 금융 계산 등 정밀한 연산을 위한 추천 방법
✔ setScale(n, RoundingMode.XXX) → 원하는 자리수에서 반올림 가능
✔ 사용자 정의 함수(round(value, places))로 유연한 소수점 처리가 가능
'프로그램 > Java' 카테고리의 다른 글
| [Java] 이미지 파일 크기 조정 및 생성하기 (0) | 2025.03.14 |
|---|---|
| [Java] 국가별 TimeZone(시간대) 처리 방법 (0) | 2025.03.14 |
| [Java] Date 객체와 날짜 처리 방법 (0) | 2025.03.13 |
| [Java] HttpURLConnection으로 HTTP/HTTPS 연결 구현하기 (0) | 2025.02.26 |
| [Java] Rest API 연결 가이드 샘플 (0) | 2025.02.26 |