수학적인 다양한 기능을 상수와 메서드로 제공
모든 상수와 메서드는 클래스명만으로 접근 가능
-> Math.PI, Math.random()
절대값 계산
int num = -10;
System.out.prinln("num의 절대값 : " + Math.abs(num));
숫자 두 개 중 큰 수 구하기
System.out.prinln("num과 20 중 큰 값 : " + Math.max(num, 20));
숫자 두 개 중 작은 수 구하기
System.out.prinln("num과 20 중 작은 값 : " + Math.min(num, 20));
제곱근 구하기
System.out.prinln("4의 제곱근 : " + Math.sqrt(4));
반올림, 버림
double dNum = 3.141592;
System.out.prinln(Math.ceil(dNum)); // 소수점 첫째자리 반올림
System.out.println(Math.floor(dNum)); // 소수점 첫째자리 버림
System.out.println(Math.round(dNum)); // 소수점 첫째자리 반올림(정수 리턴)
round()
메서드는 항상 소수점 첫째자리에서 반올림이 수행되는데 x번째 자리 반올림을 수행하기 위해서는 반올림할 숫자를 소수점 첫째자리에 위치하도록 변형해야 함!ex) 3.141592의 소수점 4번째 숫자(5)를 반올림 위치로 가져오려면 1000을 곱하거나 공식에 따른 계산 작업 수행해야 함
Math.pow(10, 3); // x승을 표시하여 계산하는 메서드 // 10의 (x-1) 값을 곱함 // x는 반올림할 자리 위치!
System.out.println(dNum * 1000); // 3141.592
System.out.println(dNum * (Math.pow(10, 3)); // 3141.592
// 둘 다 같은 결과가 나오기 때문에 아무거나 쓰면 됨
System.out.println(Math.round(dNum * 1000));
// round() 메서드를 이용해서 1000 곱한 거에 반올림을 수행하면 3142가 나옴
System.out.println(Math.round(dNum * 1000) / 1000);
// 원래 숫자로 돌리려면(double타입으로)
// 둘 중 하나는 무조건 double 타입이어야 함!
round() 메서드를 이용해서 특정 위치의 숫자까지만 남기고 제거하기
ex) 3.141592의 소수점 넷째자리까지만 남기기
System.out.println(dNum * 10000);
// 원하는 자리의 숫자까지 정수자리에 위치할 수 있도록 곱해줌
// 31415.92
System.out.println((int)(dNum * 10000));
// int형으로 바꿔줌! -> 31415
System.out.println((int)(dNum * 10000) / 10000);
// 다시 원래 숫자로 돌리기 위해서 처음 곱했던 값을 나눠줌
// 3.1415 완성!
난수(임의의 수) 발생을 위한 메서드
0.0 <= x < 1.0 범위의 double 타입 난수 발생
< 난수 발생 기본 공식 >
- (정수화)(Math.random() * 상한값) : 0 ~ 상한값 -1 (0 <= x < 상한값)
- (정수화)(Math.random() * 상한값) + 1 : 1 ~ 상한값 (0 <= x <= 상한값)
for(int i = 1; i <= 10; i++) {
System.out.prinln((int)(Math.random() * 10));
// 0부터 9 사이의 난수 발생
System.out.prinln((int)(Math.random() * 10) + 1);
// 1부터 10 사이의 난수 발생
// 1에서 20 사이의 난수 발생시키고 싶으면
// 바로 위에 Math.random() * 20으로 바꾸면 됨!
// for문에 쓰는 숫자는 난수를 몇 개 뽑을 건지 정하는 거임!
}