Language/Java

[Java] Math 주요 메서드 정리

KAispread 2022. 12. 19. 00:22
728x90
반응형

프로그래밍을 하다보면 수학적 계산을 아주 많이 하게 된다. 특히, 코딩테스트를 준비하다보면 이러한 계산을 돕는 api들을 많이 찾게 된다. 필자도 해당 api가 필요할 때마다 찾아보곤 했는데, 이번에 자주 사용하는 메서드 위주로 한 번 정리해보려한다.

 


 

자바에서는 계산을 위한 Math 클래스를 제공한다. Math 클래스는 java.lang 패키지에 위치하고 있기 때문에 별도의 import 없이 사용 가능하다.

다음은 Math 클래스의 메서드를 표로 정리한 것이다.

구분 메서드
절대값 / 부호 abs, signum
최대, 최소 값 max, min
소수점 올림 / 버림  ceil, floor, round, rint
제곱 / 제곱근 pow, scalb, sqrt, cbrt, hypot
삼각 함수 관련 toRadians, toDegrees, sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh
로그 관련 exp, getExponent, expm1, log, log1p, log10
난수 관련 random /   java.util.Random 클래스 사용 권장
소수 관련  ulp, nextAfter, nextUp, copySign

 

 

 

절대값 / 부호

  • abs() : 절대값 계산
  • signum() : 부호 확인
@Test
void test() {
    System.out.println(Math.abs(-35));        // 35
    System.out.println(Math.abs(35));         // 35
    System.out.println(Math.signum(7));       // 1.0
    System.out.println(Math.signum(-12));     // -1.0
}

- Math.abs()
매개변수의 절대값을 반환한다. 두 점 사이의 거리를 구하는 등의 많은 문제에서 유용하게 사용된다.
ex) -35 -> 35

- Math.signum()
매개변수가 양수일 경우 1.0을, 음수일 경우 -1.0을 반환한다.
ex) -12 -> -1.0

 

 

최대, 최소 값

  • min() : 두 매개변수 중 작은 값 리턴
  • max() : 두 매개변수 중 큰 값 리턴 
@Test
void test() {
    System.out.println(Math.min(35.2, 12.1));  // 12.1
    System.out.println(Math.min(-8, 2));       // -8
    System.out.println(Math.max(1.2, 2));      // 2.0
    System.out.println(Math.max(-3, -5));      // -3
}

- Math.min()
두 매개변수 중 작은 값을 리턴한다.

- Math.max()
두 매개변수 중 큰 값을 리턴한다.

 

 

소수점 올림 / 버림

  • round() : 소수점 반올림 (정수형 리턴)
  • rint() : 소수점 반올림 (double형 리턴)
  • ceil() : 올림
  • floor() : 버림
@Test
void test() {
    System.out.println(Math.round(2.4));   // 2
    System.out.println(Math.round(2.5));   // 3
    
    System.out.println(Math.rint(2.4));    // 2.0
    System.out.println(Math.rint(-1.7));   // -2.0
    
    System.out.println(Math.ceil(-1.3));   // -1.0
    System.out.println(Math.ceil(4.2));    // 5.0
    
    System.out.println(Math.floor(3.9));   // 3.0
    System.out.println(Math.floor(-3.6));  // -4.0
}

- Math.round()
소수점 반올림. 유일하게 정수를 반환한다.
ex) 2.4 -> 2

- Math.rint()
소수점 반올림. double 리턴
ex) 2.4 -> 2.0

- Math.ceil()
소수점 올림 처리. 음수일 경우 소수점 밑으로 버리고, 소수점 밑 1 이상의 양수일 경우 소수점을 버리고 +1 한다고 보면 된다.
ex) 4.2 -> 5.0

- Math.floor()
소수점 내림 처리. 소수점 밑 1 이상의 음수일 경우 소수점을 버리고 -1  한다고 보면 됨, 양수일 경우 소수점 밑으로 버림.
ex) 3.9 -> 3.0

 

 

제곱 / 제곱근

  • sqrt() : 매개 변수의 제곱근을 구함
  • cbrt() : 매개 변수의 세제곱근을 구함
  • pow() : 첫 번째 매개 변수의 두 번째 매개변수만큼의 제곱 값을 구함
  • scalb() : 첫 번째 매개변수 * 2^두 번째 매개변수 값을 구함.
  • hypot() : (첫 번째 매개변수의 제곱 + 두 번째 매개변수의 제곱)의 제곱근을 구함.
@Test
void text() {
    System.out.println(Math.sqrt(9));     // 3.0
    System.out.println(Math.sqrt(25));    // 5.0

    System.out.println(Math.cbrt(8));     // 2.0
    System.out.println(Math.cbrt(64));    // 4.0

    System.out.println(Math.pow(2, 6));   // 64.0
    System.out.println(Math.pow(3, 3));   // 27.0

    System.out.println(Math.scalb(3, 4)); // 48.0
    
    System.out.println(Math.hypot(3, 4)); // 5.0
}

- Math.sqrt()
매개변수의 제곱근을 구한다.
ex) 9 = 3^2 => 3.0

- Math.cbrt()
매개변수의 세제곱근을 구한다.
ex) 64 = 4^3 = 4.0

- Math.pow()
첫 번째 매개 변수의 두 번째 매개변수만큼의 제곱 값을 구한다. 
ex) Math.pow(2, 6)  ->   2^6 = 2 * 2 * 2 * 2 * 2 * 2 = 64.0

- Math.scalb()
첫 번째 매개변수 * 2^두 번째 매개변수 값을 구한다.
ex) Math.scalb(3, 4)  ->  3 * 2^4 = 3 * 16  = 48.0

- Math.hypot()
(첫 번째 매개변수의 제곱 + 두 번째 매개변수의 제곱)의 제곱근을 구함.
ex) Math.hypot(34)  ->  (3^2 + 4^2) -> 25 의 제곱근 = 5.0

 

 

추가적으로 필요한 메서드들은 다음의 api 문서를 참고하자.

https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html

 

Math (Java SE 17 & JDK 17)

public final class Math extends Object The class Math contains methods for performing basic numeric operations such as the elementary exponential, logarithm, square root, and trigonometric functions. Unlike some of the numeric methods of class StrictMath,

docs.oracle.com

 

참고

  • 자바의 신 1 - 이상민 저
728x90
반응형