Language/Java

[Java] Math 주요 메서드 정리

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(3, 4)  ->  (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
반응형
저작자표시 (새창열림)
  1. 절대값 / 부호
  2. 최대, 최소 값
  3. 소수점 올림 / 버림
  4. 제곱 / 제곱근
  5. 참고
'Language/Java' 카테고리의 다른 글
  • [Java] 멀티 스레드 환경에서 발생할 수 있는 동시성 이슈와 해결 방법
  • intelliJ, Gradle 환경에서 JavaFX 사용하기
  • [Java] 정렬된 배열에서 삽입 포인트 찾기 Arrays.binarySearch()
  • [eclipse] javax.servlet 패키지 import 오류
KAispread
KAispread
개발에 관련된 학습 내용들을 기록하는 공간입니다.
반응형
KAispread
기억의 정류장
KAispread
전체
오늘
어제
  • All (120)
    • Language (27)
      • Java (14)
      • JavaScript (4)
      • Principle (2)
      • Summary (7)
    • Web (10)
      • Template (4)
      • Base (6)
    • Spring (7)
    • Test (7)
    • JPA (23)
      • Spring Data JPA (9)
      • Base (14)
    • AWS (10)
    • DevOps (8)
      • Monitoring (2)
    • Database (10)
    • Algorithm (9)
    • Project (1)
    • Git (1)
    • 생각 정리 (4)
    • IDE (3)
      • eclipse (1)
      • Intellij (2)

블로그 메뉴

  • 🌈 GIthub
  • 🌎 LinkedIn
  • 📝 Notion
  • 🧑🏻‍💻 Resume

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
글쓰기 관리자
KAispread
[Java] Math 주요 메서드 정리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.