Java 자주 쓰이는 Math class 정리

kyw·2025년 10월 9일

Java

목록 보기
6/13

자바의 Math 클래스는 java.lang 패키지에 포함되어 있으며,
수학적 계산에 자주 쓰이는 정적(static) 메서드와 상수들을 제공한다.

📘 Java Math 클래스 정리

Math 클래스는 java.lang 패키지에 포함되어 있으며,
모든 메서드가 static으로 선언되어 있어 객체 생성 없이 사용 가능 (Math.method()).


🔢 상수 (Constants)

상수설명예시
Math.PI원주율 π (3.1415926535...)Math.PI * r * r
Math.E자연상수 e (2.7182818...)Math.pow(Math.E, 2)

🧮 기본 연산 (기초 산술)

메서드설명예시결과
Math.abs(x)절댓값Math.abs(-5)5
Math.max(a, b)두 수 중 큰 값Math.max(3, 9)9
Math.min(a, b)두 수 중 작은 값Math.min(3, 9)3
Math.addExact(a, b)오버플로 감지 덧셈Math.addExact(1_000_000_000, 1_000_000_000)예외 발생 시 ArithmeticException
Math.subtractExact(a, b)오버플로 감지 뺄셈Math.subtractExact(-2_000_000_000, 1_000_000_000)예외 발생

📈 제곱, 제곱근, 지수, 로그

메서드설명예시결과
Math.pow(a, b)a의 b제곱Math.pow(2, 3)8.0
Math.sqrt(x)제곱근Math.sqrt(9)3.0
Math.cbrt(x)세제곱근Math.cbrt(27)3.0
Math.exp(x)e^x 계산Math.exp(1)2.718...
Math.log(x)자연로그 (ln x)Math.log(Math.E)1.0
Math.log10(x)상용로그 (log₁₀ x)Math.log10(100)2.0

📐 삼각함수 (Trigonometric)

메서드설명예시결과
Math.sin(rad)사인 (radian 단위)Math.sin(Math.PI / 2)1.0
Math.cos(rad)코사인Math.cos(0)1.0
Math.tan(rad)탄젠트Math.tan(Math.PI / 4)1.0
Math.asin(x)아크사인 (역사인)Math.asin(1)1.5707... (π/2)
Math.acos(x)아크코사인Math.acos(0)1.5707...
Math.atan(x)아크탄젠트Math.atan(1)0.7853... (π/4)
Math.toRadians(deg)도 → 라디안 변환Math.toRadians(180)3.14159...
Math.toDegrees(rad)라디안 → 도 변환Math.toDegrees(Math.PI)180.0

🎲 반올림 관련

메서드설명예시결과
Math.round(x)반올림 (소수점 첫째 자리에서)Math.round(3.6)4
Math.floor(x)내림 (가장 가까운 작은 정수)Math.floor(3.9)3.0
Math.ceil(x)올림 (가장 가까운 큰 정수)Math.ceil(3.1)4.0
Math.rint(x)가장 가까운 정수 (짝수 우선 반올림)Math.rint(2.5)2.0, Math.rint(3.5)4.0

🎯 난수 (Random)

메서드설명예시결과
Math.random()0.0 이상 1.0 미만 난수 생성Math.random()0.12345...
Math.random() * n0 이상 n 미만 실수Math.random() * 100.0 ~ 9.999...
(int)(Math.random() * n)0 이상 n-1 이하 정수(int)(Math.random() * 6)0~5
(int)(Math.random() * (max - min + 1)) + min특정 범위 정수1~10 범위 ⇒ (int)(Math.random() * 10) + 1

🧠 기타 유용 메서드

메서드설명예시결과
Math.signum(x)부호 반환 (-1, 0, 1)Math.signum(-10)-1.0
Math.hypot(x, y)피타고라스 계산 √(x² + y²)Math.hypot(3, 4)5.0
Math.copySign(a, b)a의 크기에 b의 부호를 붙임Math.copySign(3, -2)-3.0
Math.nextUp(x) / Math.nextDown(x)주어진 수보다 약간 큰/작은 부동소수값Math.nextUp(1.0)1.0000000000000002

🚀 사용 팁

Math 클래스는 객체 생성 불가 (private 생성자)
import 불필요 — java.lang 자동 포함
✅ 고정밀 계산이 필요하면 BigDecimal 사용
✅ 난수는 java.util.Random 혹은 ThreadLocalRandom 권장 (Math.random()보다 안정적)


profile
作心百日

0개의 댓글