본문 바로가기

Java

자바 Math

자바 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