프로그래밍 언어/JAVA

Math 클래스

· 코딩마이데이

Math의 특징

Math 클래스는 java.lang 패키지에 포함되어 있으며 기본적인 산술 연산을 제공합니다. 모든 멤버 메소드는 static 타입이므로 다음과 같이 클래스 이름으로 바로 사용하면 됩니다.

double d = Math.random();
double pi = Math.PI; // 3.141592 원주율

 

Math 클래스의 주요 메소드

메소드 설명
static double abs(double a) 실수 a의 절댓값 리턴
static double cos(double a) 실수 a의 cosine 값 리턴
static double sin(double a) 실수 a의 sine 값 리턴
static double tan(double a) 실수 a의 tangent 값 리턴
static double exp(double a) e제곱 a의 값 리턴
static double ceil(double a) 올림. 실수 a보다 크거나 같은 수 중에서 가장 작은 정수를 실수 타입으로 리턴
static double floor(double a) 내림. 실수 a보다 작거나 같은 수 중에서 가장 큰 정수를 실수 타입으로 리턴
static double max(double a, double b) 두 수 a, b 중에서 큰 수 리턴
static double min(double a, double b) 두 수 a, b 중에서 작은 수 리턴
static double random() 0.0보다 크고 같고 1.0보다 작은 임의의 실수 리턴
static lond round(double a) 반올림. 실수 a를 소수 첫째 자리에서 반올림한 정수를 long 타입으로 변환
static double sqrt(double a) 실수 a의 제곱근 리턴

 

Math 클래스를 활용한 난수 발생

Math 클래스에서 가장 많이 사용하는 메소드는 난수를 발생하는 random()입니다. 이 메소드는 0.0보다 크거나 같고 1.0보다 작은 임의의 double 값을 리턴합니다. random()을 이용하여 1에서 100까지 (100 포함)의 정수 난수를 10개 발생시키는 코드는 다음과 같습니다.

for (int x = 0; x < 10; x++) {
	int n = (int)(Math.random() * 100 + 1); // n은 [1~100] 사이의 랜덤 함수
	System.out.println(n);
}

 

Math.random() * 100은 0.0 ~ 99.9999... 사이의 실수이고, 여기에 1월 더하면 1.0 ~ 100.9999 사이의 랜덤한 실수입니다. 다시 이 값을 (int)로 강제 타입 변환하면  소수점 이하가 떨어져 나가므로 1~100까지 정수 값을 얻을 수 있습니다.

public class MathEx {
	public static void main(String[] args) {
		System.out.println(Math.PI); // 원주율 상수 출력
		System.out.println(Math.ceil(3.8)); // ceil(올림)
		System.out.println(Math.floor(3.1)); // floor(내림)
		System.out.println(Math.sqrt(9)); // 제곱근
		System.out.println(Math.exp(2)); // e의 2승
		System.out.println(Math.round(3.14)); // 반올림
		
		// [1, 45] 사이의 정수형 난수 5개 발생
		System.out.println("이번주 행운의 번호는 ");
		for (int i = 0; i < 5; i++)
			System.out.print((int) (Math.random() * 45 + 1) + " "); // 난수 발생
	}
}

 

실행 결과

3.141592653589793

4.0

3.0

3.0

7.38905609893065

3

이번주 행운의 번호는

5 13 31 34 39

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

컬렉션과 제네릭  (0) 2025.03.24
Calendar 클래스  (0) 2025.03.21
StringTokenizer 클래스  (0) 2025.03.14
StringBuffer 클래스  (0) 2025.03.13
String 클래스  (0) 2025.03.11