java.math 패키지금융 계산 (금리, 환율)
약물 투여량, 의료 시스템
등 정밀도 매우 중요한 프로그램에서는 치명적
그래서 → 정확한 연산을 위한 전용 클래스 제공
BigDecimal 클래스 (정밀한 실수 표현)| 특징 | 설명 |
|---|---|
| 정밀한 소수 표현 가능 | 실수 연산 오차 방지 |
| 문자열 기반 생성 권장 | "1.2345" 형식으로 생성 |
| 반올림 / 버림 / 자리수 조정 지원 | .setScale(), .divide() 등 |
BigDecimal a = new BigDecimal("837462728289.84827262");
BigDecimal b = a.movePointRight(2);
System.out.println(b);
BigDecimal c = a.divide(b, BigDecimal.ROUND_DOWN);
System.out.println(c);
c = a.divide(b, 5, BigDecimal.ROUND_DOWN);
System.out.println(c);
출력
83746272828984.827262
0.01000000
0.01000
BigInteger 클래스 (매우 큰 정수 표현)| 특징 | 설명 |
|---|---|
| long 범위 초과 정수 저장 가능 | 암호/보안/과학 계산에서 자주 사용 |
비교는 compareTo() 사용 |
결과: -1, 0, 1 |
BigInteger a = new BigInteger("1234567890000");
BigInteger b = new BigInteger("9876543210000");
if(a.compareTo(b) <= 0)
System.out.println(a.min(b));
else
System.out.println(a.max(b));
java.lang.Math 클래스 (수학 연산 도구 모음)