BigDecimal result = numor.divide(denom, times, RoundingMode.HALF_UP);
return result;
고정소수점과 부동소수점의 차이
소수점 위치 | 고정됨 | 가변적 |
정확도 | 정밀 (오차 거의 없음) | 오차 가능 (예: 0.1 + 0.2 ≠ 0.3) |
속도 | 빠름 (정수 연산 기반) | 매우 빠름 (CPU 부동소수점 연산) |
사용처 | 금융 계산 | 과학/통계/그래픽 계산 |
Java 예시 | BigDecimal | float, double |
기존 float, double 을 통해서 소수점을 표현하면 최대 16자리까지만 표현이 가능.
BigDecimal 을 사용하면 원하는 만큼의 자리수를 표현이 가능하다.
RoundingMode. 옵션들
UP | 무조건 올림 (자리 버림 이후 0 아니면) | 2.68 |
DOWN | 무조건 버림 | 2.67 |
HALF_UP | 5 이상 올림 | 2.68 ✅ |
HALF_DOWN | 5는 내림 | 2.67 |
HALF_EVEN | 5면 짝수로 반올림 (은행식) | 2.68 |
CEILING | 양수는 올림 / 음수는 버림 | 2.68 |
FLOOR | 양수는 버림 / 음수는 올림 | 2.67 |
1. 자바의 Comparator 인터페이스를 익명 클래스로 구현
2. 안에서 compare() 메서드를 오버라이딩해서 정렬 기준을 직접 정함
List<String> list = new ArrayList<>();
list.add("spring");
list.add("hi");
list.add("smartphone");
list.sort(new Comparator<String>() {
@Override
public int compare(String a, String b) {
return a.length() - b.length(); // 길이 순 정렬
}
});
개념설명
인터페이스 | 메서드의 "설계도" 역할, 구현은 다른 클래스에서 함 |
오버라이딩 | 부모/인터페이스에서 정의된 메서드를 자식에서 "구현" |
익명 클래스 | 클래스 이름 없이 한 번만 쓸 작은 클래스를 선언하는 방식 |
compareTo() | 문자열/객체를 사전순 등으로 비교할 때 사용함 (Comparable 인터페이스 소속) |
인터페이스
public interface Comparator<T> {
int compare(T o1, T o2);
}
- Comparator<T>는 비교 기준을 정의하는 인터페이스
- compare(a, b) 메서드를 구현해서 정렬 기준을 지정
- 리턴값의 의미:
- 음수: a가 앞
- 0: 같음
- 양수: b가 앞
익명클래스
list.sort(new Comparator<String>() {
@Override
public int compare(String a, String b) {
return a.length() - b.length();
}
});
- Comparator<String>을 바로 익명 클래스로 만들어서,
- compare() 메서드를 오버라이딩하고,
- 그 안에서 원하는 정렬 기준을 정의한 것
📌 이렇게 하면 별도로 클래스 만들 필요 없이, 간단히 비교 기준을 커스터마이징 가능
오버라이딩
- Comparator 인터페이스에는 compare()라는 추상 메서드가 존재
- 익명 클래스 안에서 이 메서드를 직접 구현(오버라이딩) 해야 함.
@Override
public int compare(String a, String b) {
return a.length() - b.length(); // 정렬 기준 정의
}
@Override는:
- "이 메서드는 부모/인터페이스의 메서드를 재정의한 것"라는 표시
- 오타/실수 방지를 위해 매우 중요
compareTo() 사용 예시
return a.compareTo(b);
문자열끼리 사전순으로 비교할 때 사용하는 메서드
'Bootcamp > java codingtest' 카테고리의 다른 글
최소 신장 트리 MST (0) | 2025.04.22 |
---|---|
동적 계획법, JAVA 자료형 (1) | 2025.04.21 |
문자열 리스트, array (0) | 2025.04.14 |
재귀 (0) | 2025.04.12 |
BigInteger, array 정렬 (0) | 2025.04.08 |