Java

[Java] 자바 Math 클래스 - 수학 관련 함수

yujinius 2024. 5. 6. 14:39

1. Math 클래스 소개

자바의 Math 클래스는 수학적인 연산을 수행하는 데 유용한 다양한 메서드를 제공합니다. 이 클래스는 모든 메서드가 정적(static)이므로, Math 클래스의 객체를 생성할 필요 없이 바로 사용할 수 있습니다.

또한, Math 클래스는 java.lang 패키지에 위치하고 있기 때문에 별도의 import 없이 사용 가능합니다.

2. Math 클래스의 상수

  • static double E : 자연 로그의 밑인 e에 가장 가까운 값
  • static double PI : 원주율 PI

3. Math 클래스에서 자주 쓰이는 메소드

구분 메소드
절대값, 부호 abs, signum
제곱 관련 pow, scalb, sqrt, cbrt, hypot
최소, 최대 min, max
소수점 ceil, floor, round, rint
삼각함수 toRadians, toDegrees, sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh
이외 로그, 지수, 난수, 소수 관련이 있음

▶ 절대값, 부호 반환

자바의 Math 클래스에서 제공하는 abssignum 메소드에 대해 알아보겠습니다.

1. abs(int a), abs(double a) , abs(float a) , abs(long a)

이 메소드는 주어진 값의 절댓값을 반환합니다. 인자로 정수나 부동 소수점 수를 받아들이며, 반환되는 값은 해당 값의 절댓값입니다.

사용법:

int absoluteValueInt = Math.abs(-10); // 결과: 10
double absoluteValueDouble = Math.abs(-3.14); // 결과: 3.14

2. signum(double a)

이 메소드는 주어진 값의 부호를 반환합니다. 반환값은 다음과 같습니다:

  • 0보다 큰 경우: 1
  • 0인 경우: 0
  • 0보다 작은 경우: -1

사용법:

double value = -3.5;
double sign = Math.signum(value); // 결과: -1.0

abs 메소드는 값을 절댓값으로 변환할 때 사용되며, signum 메소드는 값의 부호를 확인할 때 유용합니다. 이러한 메소드들은 수학적 연산이나 값의 처리를 위해 자주 사용됩니다.

▶ 제곱 관련

자바의 Math 클래스에서 제공하는 pow, scalb, sqrt, cbrt, 그리고 hypot 메소드에 대해 자세히 알아보겠습니다.

1. pow(double a, double b)

이 메소드는 주어진 밑(base)의 거듭제곱을 계산합니다. ab번 거듭제곱한 값을 반환합니다.

사용법:

// 1. Math.pow(double a, double b)
double resultPow = Math.pow(2, 3); // 결과: 8.0 (2^3)

2. scalb(double d, int scaleFactor)

주어진 값을 지정된 지수로 증가시킵니다. 즉, 주어진 값 d2^scaleFactor를 곱한 값을 반환합니다.

사용법:

// 2. Math.scalb(double d, int scaleFactor)
double resultScalb = Math.scalb(3.5, 2); // 결과: 14.0 (3.5 * 2^2)

3. sqrt(double a)

이 메소드는 주어진 값의 제곱근을 반환합니다.

사용법:

// 3. Math.sqrt(double a)
double resultSqrt = Math.sqrt(25); // 결과: 5.0 (제곱근)

4. cbrt(double a)

주어진 값의 세제곱근을 반환합니다.

사용법:

// 4. Math.cbrt(double a)
double resultCbrt = Math.cbrt(27); // 결과: 3.0 (세제곱근)

5. hypot(double x, double y)

두 개의 인자로 전달된 값을 이용하여 피타고라스의 정리를 계산합니다. 즉, 두 직각삼각형의 직각을 이루는 두 변의 길이를 입력받아 빗변의 길이를 반환합니다.

사용법:

// 5. Math.hypot(double x, double y)
double resultHypot = Math.hypot(3, 4); // 결과: 5.0 (빗변의 길이)

▶ 최소, 최대

1. min(a, b)와 max(a, b)

이 두 메소드는 주어진 두 개의 수 중에서 각각 작은 값을 찾아주는 min과 큰 값을 찾아주는 max 메소드입니다.

사용법:

int minResult = Math.min(10, 20); // 결과: 10
int maxResult = Math.max(10, 20); // 결과: 20

▶ 소수점 관련

자바의 Math 클래스에서 제공하는 ceil, floor, round, rint 메소드에 대해 설명하겠습니다.

1. ceil(double a) : 올림

ceil 메소드는 주어진 값보다 크거나 같은 가장 작은 정수를 반환합니다. 즉, 주어진 값의 소수점 이하를 올림하여 가장 가까운 정수를 반환합니다.

사용법:

double result = Math.ceil(3.14); // 결과: 4.0

2. floor(double a) : 내림

floor 메소드는 주어진 값보다 작거나 같은 가장 큰 정수를 반환합니다. 즉, 주어진 값의 소수점 이하를 내림하여 가장 가까운 정수를 반환합니다.

사용법:

double result = Math.floor(3.14); // 결과: 3.0

3. round(float a)와 round(double a) : 반올림하여 정수 반환

round 메소드는 주어진 값에 가장 가까운 정수를 반환합니다. 소수점 이하가 0.5 이상이면 올림하고, 0.5 미만이면 내림합니다.

사용법:

long result1 = Math.round(3.14f); // 결과: 3
long result2 = Math.round(3.76); // 결과: 4

4. rint(double a) : 반올림해서 double 반환

rint 메소드는 주어진 값에 가장 가까운 정수를 double 형태로 반환합니다. 소수점 이하가 0.5 이상이면 올림하고, 0.5 미만이면 내림합니다.

사용법:

double result = Math.rint(3.14); // 결과: 3.0

이렇게 ceil, floor, round, rint 메소드를 사용하면 주어진 값의 정수 부분을 다양한 방식으로 처리할 수 있습니다.

▶ 삼각 함수 관련

자바의 Math 클래스에서 제공하는 삼각 함수와 관련된 메소드들에 대해 알아보겠습니다.

삼각 함수 관련 메소드:

1. toRadians(double angdeg)와 toDegrees(double angrad)

  • toRadians: 주어진 각도를 라디안 단위로 변환합니다.
  • toDegrees: 주어진 라디안 값을 각도로 변환합니다.

사용법:

double radians = Math.toRadians(90); // 결과: π/2 (1.5707963267948966)
double degrees = Math.toDegrees(Math.PI / 2); // 결과: 90.0

2. 삼각 함수:

  • sin: 주어진 각도의 사인 값을 반환합니다.
  • cos: 주어진 각도의 코사인 값을 반환합니다.
  • tan: 주어진 각도의 탄젠트 값을 반환합니다.
  • asin: 사인 값으로 역삼각 함수를 취한 값을 반환합니다.
  • acos: 코사인 값으로 역삼각 함수를 취한 값을 반환합니다.
  • atan: 탄젠트 값으로 역삼각 함수를 취한 값을 반환합니다.
  • atan2: 두 인자의 아크탄젠트 값을 반환합니다. (yx 좌표를 기반으로 합니다.)

사용법:

double sinValue = Math.sin(Math.PI / 6); // 결과: 0.5
double cosValue = Math.cos(Math.PI / 3); // 결과: 0.5
double tanValue = Math.tan(Math.PI / 4); // 결과: 1.0
double asinValue = Math.asin(0.5); // 결과: π/6 (0.5235987755982988)
double acosValue = Math.acos(0.5); // 결과: π/3 (1.0471975511965976)
double atanValue = Math.atan(1.0); // 결과: π/4 (0.7853981633974483)
double atan2Value = Math.atan2(1.0, 1.0); // 결과: π/4 (0.7853981633974483)

3. 쌍곡 함수:

  • sinh: 쌍곡 사인 값을 반환합니다.
  • cosh: 쌍곡 코사인 값을 반환합니다.
  • tanh: 쌍곡 탄젠트 값을 반환합니다.

사용법:

double sinhValue = Math.sinh(0.0); // 결과: 0.0
double coshValue = Math.cosh(0.0); // 결과: 1.0
double tanhValue = Math.tanh(0.0); // 결과: 0.0

이렇게 Math 클래스의 메소드들을 사용하여 각종 삼각 함수와 쌍곡 함수를 계산할 수 있습니다.

▼ 이외의 로그, 지수 등의 다른 메소드는 공식 문서를 참고해봅시다.

Math (Java Platform SE 8 )