Java

java.lang.Math & StrictMath Class

jamie. 2020. 1. 7. 20:25
반응형

java.lang.Math

수학 계산을 하는 클래스

java.lang.Math vs java.lang.StrictMath

Math

JDK 1.0 ~

대부분 StrictMath 클래스의 메서드를 선언하게 되어 있음

StrictMath

JDK 1.3 ~

어떤 OS나 어떤 시스템 아키텍쳐에서 수행되든 간에 동일한 값을 리턴(Math와 차이가 나기도)

대부분의 메서드는 자바 코드가 아닌 native로 선언

Math Class의 상수

/* 자연 로그 알고리즘에 기반하여 지수 e의 근사 값을 제공
 * JDK 1.8 기준 2.718281828459045
 */
double E

/* 원주율(파이) 값을 제공
 * JDK 1.8 기준 3.141592653589793
 */
double PI

Math Class의 Method

  • 절대값/부호 : 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

  • 소수 : ulp, nextAfter, nextUp, copySign

  • 기타 : IEEEremainder

절대값/부호

// 절대값
int abs(int)
long abs(long)
float abs(float)
double abs(double)

// 부호 - 양수는 1.0, 음수는 -1.0, 0은 0
float signum(float)
double signum(double)

최대/최소

// 작은 값
int min(int, int)
long min(long, long)
float min(float, float)
double min(double, double)

// 큰 값
int max(int, int)
long max(long, long)
float max(float, float)
double max(double, double)

올림/버림

// 반올림
int round(float)
long round(double)
double rint(double)

// 올림
double ceil(double)

// 버림
double floor(double)

제곱/제곱근

// 제곱근
double sqrt(double)

// 세제곱근
double cbrt(double)

// 첫 번째 매개변수의 두 번째 매개변수만큼의 제곱
double pow(double, double)

// 첫 번째 매개변수 * (2의 두번째 매개변수만큼의 제곱)
float scalb(float, int)
double scalb(double, int)

// (첫 번째 매개변수의 제곱 + 두 번째 매개변수의 제곱)의 제곱근
double hypot(double, double)

삼각 함수

최대한의 근사치로 나타남(딱 떨어지는 값은 아님)

// 각도를 래디안 값으로
double toRadians(double)

// 래디안 값을 각도로
double toDegrees(double)

// 사인 값
double sin(double)

// 코사인 값
double cos(double)

// 탄젠트 값
double tan(double)

랜덤

java.util.Random이라는 클래스를 사용하는 것이 훨씬 효과적임

반응형