자바 Math
여러 수학적 계산을 편리하게 해주는 Math의 메소드들을 소개한다.
Math.pow(double a, double b) :
a의 b제곱을 구해준다. 리턴도 double형이라 보통은 앞에 (int)를 붙여준다.
System.out.println("제곱 >>>>>>>>>> "+(int)Math.pow(2, 3));
제곱 >>>>>>>>>> 8
Math.sqrt(double a):
a의 제곱근(루트)를 구해준다. 역시 리턴은 double이다.
System.out.println("제곱근 >>>>>>>> "+Math.sqrt(3));
제곱근 >>>>>>>> 1.7320508075688772
Math.round(double a):
a를 반올림해준다.
System.out.println("Round >>>>>>>>> "+Math.round(1.6433));
Round >>>>>>>>> 2
round를 쓰면 무조건 소수 첫째자리에서 반올림해버리는 단점이 있다.
소수점 둘째자리나 셋째자리까지 출력하고 싶을 때가 있을 것이다.
그럴 때의 방법을 소개한다.
33.333333....을 소수 둘째자리에서 반올림하고 싶다고 하자.
33.333333...에 100을 곱한 뒤 round()를 이용해 반올림한다.
Math.round(33.333333*100)
결과는 3333이 나올 것이다.
여기에 100.0 으로 나눠 주면, 33.33가 되어 소수 둘째자리에서 반올림한 효과를 낼 수 있다.
(100으로 나누면 33이 된다)
System.out.println("반올림 >>>>>>>> "+Math.round(33.333333*100)/100.0);
반올림 >>>>>>>> 33.33
Math.random() :
자주 쓰이는 random이다. 역시 double형으로 리턴하기 때문에 앞에 (int)를 붙이는 경우가 많다.
(Math.random() * (MAX-MIN+1)) + MIN
이렇게 쓰면 MIN에서 MAX까지의 랜덤숫자를 뽑아낼 수 있다.
(Math.random() * (MAX)) + 1
이렇게 쓰면 1부터 MAX까지 뽑아낼 수 있다.
System.out.println("랜덤 >>>>>>>>>> "+(int)(Math.random() * 500));
랜덤 >>>>>>>>>> 349
+1을 하지 않으면, 0부터 뽑아낸다.
Math.abs(double a) :
절대값을 구해준다.
System.out.println("절대값 >>>>>>>> "+Math.abs(-5));
절대값 >>>>>>>> 5
Math.log(double a):
자연로그를 구해준다.
Math.log10(double a):
밑이 10인 로그를 구해준다.
자바에는 로그함수가 굉장히 빈약하다. 밑을 바꿔주려면 따로 계산을 거쳐야 할 것 같다.
간단히 만들어본 로그메소드다.
public static double log2(double i, double j) {
return Math.log10(j) / Math.log10(i);
}
System.out.println("log>>>>>>> "+log2(3,81));
log >>>>>>> 4.0
i를 밑, j를 위의 숫자로 만들어보았다. 잘 됨.
포스팅에 사용한 코드 전문.
Math_.java
public class Math_ {
public static void main(String[] args) {
System.out.println("제곱 >>>>>>>>>> "+(int)Math.pow(2, 3)); //제곱
System.out.println("제곱근 >>>>>>>> "+Math.sqrt(3)); // 제곱근 구하기
System.out.println("Round >>>>>>>>> "+Math.round(1.64344)); //반올림
System.out.println("랜덤 >>>>>>>>>> "+(int)(Math.random() * 500));
//(int)(Math.random() * (MAX-MIN+1)) + MIN >> MIN부터 MAX까지
//(int)(Math.random() * (MAX)) + 1 >>> 1부터 MAX까지
System.out.println("반올림 >>>>>>>> "+Math.round(33.333333*100)/100.0); //소수점 둘째자리에서 반올림
System.out.println("절대값 >>>>>>>> "+Math.abs(-5)); //절대값
System.out.println("log>>>>>>> "+log2(3,81));
}
public static double log2(double i, double j) {
return Math.log10(j) / Math.log10(i);
}
}
제곱 >>>>>>>>>> 8
제곱근 >>>>>>>> 1.7320508075688772
Round >>>>>>>>> 2
랜덤 >>>>>>>>>> 225
반올림 >>>>>>>> 33.33
절대값 >>>>>>>> 5
log >>>>>>> 4.0