본문 바로가기
Algorithm/Java

Java - Math 클래스

by ZaRi 2025. 9. 21.

이제 기본적인 연산을 위한 Math 클래스를 정리해보자!
참고로 import java.math.*; 이걸 할 필요 없다. 

 

 

Math 연산

Math 클래스는 java.lang 패키지에 포함되어 있어 import 없이 바로 사용할 수 있습니다. 또한, 모든 메서드가 **정적(static)**으로 선언되어 있어, new Math()처럼 객체를 생성할 필요 없이 Math.메서드() 형태로 바로 호출하면 됩니다.

 

 

기본 연산 

Math.abs(num) 숫자의 절댓값을 반환합니다. int, long, double 등 모든 숫자 타입에 사용 가능합니다. 파라미터와 동일 int a = Math.abs(-10); // 10
double d = Math.abs(-3.14); // 3.14
Math.max(a, b) 두 숫자 중 더 큰 값을 반환합니다. 파라미터와 동일 int m = Math.max(10, 20); // 20
Math.min(a, b) 두 숫자 중 더 작은 값을 반환합니다. 파라미터와 동일 int m = Math.min(10, 20); // 10

 

 

제곱, 제곱근

Math.pow(a, b) a의 b**승 (거듭제곱)**을 계산합니다. double double p = Math.pow(2, 10); // 1024.0 
(주의!) 파라미터와 반환값이 모두 double 타입이므로, 정수 계산 시 (int)로 형변환이 필요할 수 있습니다.
Math.sqrt(num) 숫자의 **제곱근(루트)**을 계산합니다. double double r = Math.sqrt(9); // 3.0 <br> double r2 = Math.sqrt(2); // 1.414...

반환값이 double다 타입에 주의하자.

 

만약 n제곱근을 구하고 싶다면.

double number = 27.0;

// 27.0의 (1.0 / 3.0)승을 계산합니다.
// (주의!) 1/3이 아니라 1.0/3.0 처럼 double 형태로 나눠야 소수점 계산이 됩니다.
double cubicRoot = Math.pow(number, 1.0 / 3.0);

System.out.println(number + "의 세제곱근: " + cubicRoot);
// 출력: 27.0의 세제곱근: 3.0


// 81의 네제곱근 (81의 1/4승)
double num1 = 81.0;
double fourthRoot = Math.pow(num1, 1.0 / 4.0);
System.out.println(num1 + "의 네제곱근: " + fourthRoot); // 출력: 81.0의 네제곱근: 3.0

 

 

올림, 내림, 반올림

Math.ceil(d) (Ceiling: 천장) 주어진 실수보다 크거나 같은 정수 중 가장 작은 정수(올림)를 반환합니다. double Math.ceil(3.14); // 4.0 <br> Math.ceil(3.0); // 3.0 Math.ceil(-3.14); // -3.0 (더 큰 정수)
Math.floor(d) (Floor: 바닥) 주어진 실수보다 작거나 같은 정수 중 가장 큰 정수(내림/버림)를 반환합니다. double Math.floor(3.14); // 3.0 <br> Math.floor(3.99); // 3.0
Math.floor(-3.14); // -4.0 (더 작은 정수)
Math.round(d) 소수점 첫째 자리에서 반올림한 정수를 반환합니다. long Math.round(3.14); // 3
Math.round(3.5); // 4
Math.round(-3.14); // -3
Math.round(-3.5); // -3
(참고) round(float)는 int를 반환.

만약에 정수가 아니라 특정 자리에서 하고 싶다면, 자릿수를 곱해서 올린 다음에 하는 것 밖에 방법이 없다고 한다.

 

 

랜덤

기능 Math.random() 방식 Random 클래스 방식 설명
객체 생성 필요 없음 (정적 메서드) Random rand = new Random(); Random 객체를 한 번 생성해두고 재사용하는 것이 일반적입니다.
0 ~ (n-1) 범위 정수 (int) (Math.random() * n) rand.nextInt(n); nextInt(n)은 0부터 n-1까지의 정수를 반환하여 훨씬 직관적입니다.
min ~ max 범위 정수 (int) (Math.random() * (max - min + 1)) + min rand.nextInt(max - min + 1) + min; 원리는 동일하지만 nextInt를 쓰는 쪽이 의도가 명확합니다.
기타 기능 double 난수만 제공 nextBoolean(), nextDouble(), nextLong() 등 다양한 타입의 난수를 제공합니다.

 

import java.util.Random;

public class Lotto {
    public static void main(String[] args) {
        Random rand = new Random();
        int min = 1;
        int max = 45;

        // 1부터 45까지의 난수 생성
        // rand.nextInt(45) -> 0~44, 여기에 +1을 하여 1~45 범위를 만듦
        int lottoNumber = rand.nextInt(max - min + 1) + min;

        System.out.println("이번 주 로또 번호는: " + lottoNumber);
    }
}

 

 

 

 

기타

Math.PI 원주율 π (3.14159...) 값을 담고 있는 상수입니다. (메서드 X) double double area = Math.PI * r * r;

 

댓글