본문 바로가기

BackEnd/Java

[java] 이것이 자바다 ch12 수학(Math) 클래스

728x90
반응형

1. Math 클래스

   ▷ 수학 계산에 사용할 수 있는 정적 메소드를 제공합니다.

 

NO 구분 코드 리턴값
1 절대값(abs) int v1 =Math.abs(-5);
double v2 = Math.abs(-3.14);
v1 = 5
v2 = 3.14
2 올림값(ceil) double v3 = Math.ceil(5.3);
double v4 = Math.ceil(-5.3);
v3 = 6.0
v4 = -5.0
3 버림값(floor) double v5 = Math.floor(5.3);
double v6 = Math.floor(-5.3);
v5 = 5.0
v6 = -6.0
4 최대값(max) int v7 =Math.max(5, 9);
double v8 = Math.max(5.3, 2.5);
v7 = 9
v8 = 5.3
5 최소값(min) int v9 =Math.min(5, 9);
double v10 = Math.min(5.3, 2.5);
v9 = 5
v10 = 2.5
6 랜덤값(random) double v11 = Math.random(); 0.0<=v11<1.0
7 반올림값(round) long v14 =Math.round(5.3);
long v15 =Math.round(5.7);
v14=5
v15=6

 

◎ Math 함수 사용 예제

public class MathExample {
	public static void main(String[] args) {
		// 큰 정수 또는 작은 정수 얻기
		double v1 = Math.ceil(5.3);
		double v2 = Math.floor(5.3);
		System.out.println("v1=" + v1);
		System.out.println("v2=" + v2);
		
		// 큰 값 또는 작은 값 얻기
		long v3 = Math.max(3, 7);
		long v4 = Math.min(3, 7);
		System.out.println("v3=" + v3);
		System.out.println("v4=" + v4);
		
		// 소수 이하 두 자리 얻기
		double value = 12.3456;
		double temp1 = value * 100;
		long temp2 = Math.round(temp1);
		double v5 = temp2 / 100.0;
		System.out.println("v5=" + v5);
	}
}

//	출력 : 
//	v1=6.0
//	v2=5.0
//	v3=7
//	v4=3
//	v5=12.35


소수 이하 두 자리를 얻는 방법은 이전에 많이 사용했던 방법을 풀어서 설명하는 방법입니다.

 

◎ random의 사용

int num = (int) (Math.random() * n) + start;
→ start <= num < start + n 까지 출력할 수 있습니다.

random.nextInt(45) + 1;
→ 1~45까지 수중에 랜덤으로 숫자를 출력합니다.

 

Random 객체 사용

NO 객체 생성 설명
1 Random() 현재 시간을 이용해서 종자값을 자동 설정한다.
2 Random(long seed) 주어진 종자값을 사용한다.

▷ Random(3), Random(5) 등 주어진 숫자값에 따른 결과 값이 항상 동일하게 출력됩니다.

 

 

◎ 리턴 값에 따른 메소드 사용

NO 리턴값 메소드(매개변수) 설명
1 boolean nextBoolean() boolean 타입의 난수를 리턴
2 double nextDouble() double 타입의 난수를 리턴(0.0<=~1.0)
3 int nextInt() int 타입의 난수를 리턴(-2^32<=~<=2^32-1)
4 int nextInt(int n) int 타입의 난수를 리턴(0<=~<n)

 

 

◎ Math 함수 사용 예제 2

import java.util.Arrays;
import java.util.Random;

public class RandomExample {
	public static void main(String[] args) {
		// 선택 번호
		int[] selectNumber = new int[6];
		Random random = new Random(3);
		System.out.print("선택번호 : ");
		for(int i=0; i<6; i++) {
			selectNumber[i] = random.nextInt(45) + 1;
			System.out.print(selectNumber[i] + " ");
		}
		System.out.println();
		
		// 당첨 번호
		int[] winningNumber = new int[6];
		random = new Random(5);
		System.out.print("당첨번호 : ");
		for(int i=0; i<6; i++) {
			winningNumber[i] = random.nextInt(45) + 1;
			System.out.print(winningNumber[i] + " ");
		}
		System.out.println();
		
		// 당첨 여부
		Arrays.sort(selectNumber);
		Arrays.sort(winningNumber);
		boolean result = Arrays.equals(selectNumber, winningNumber);
		System.out.print("당첨여부 : ");
		if(result) {
			System.out.println("1등에 당첨되셨습니다.");
		} else {
			System.out.println("당첨되지 않았습니다.");
		}
	}
}

//	출력 : 
//	선택번호 : 15 21 16 17 34 28 
//	당첨번호 : 18 38 45 15 22 36 
//	당첨여부 : 당첨되지 않았습니다.


번호의 결과 값은 시드가 고정되어 있기 때문에 변경되지 않습니다.

 

Math 클래스는 문제를 푸는 도중 많이 사용해 보았기때문에 익숙했습니다.

 

Math 클래스를 이용해서 해결하는 것도 중요하지만 Math 클래스의 함수들이 어떻게 만들어지는지도 중요합니다!

 

그래서 두 가지 방법 모두 할 줄 알아야합니다!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형