StrictMath — 엄격 수학 함수 클래스
StrictMath — 엄격 수학 함수 클래스
StrictMath 클래스는 지수, 로그, 제곱근, 삼각 함수 같은 기본 숫자 연산을 수행하는 메서드를 포함해요. Math 클래스와 달리 StrictMath의 메서드는 고정된(free-standing) 수학 라이브러리 구현 표준에 따라 결정론적으로 동작해요. 즉 어떤 플랫폼에서 실행해도 StrictMath의 결과가 동일하게 나오도록 보장돼요. 이 클래스는 인스턴스화할 수 없어요 — 모든 메서드가 정적(static)이에요.
본문
상수:
public static final double E — 오일러 수 e (자연 로그의 밑). 값은 2.718281828459045예요.
public static final double PI — 파이 (원의 원주와 지름의 비). 값은 3.141592653589793예요.
public static final double TAU — 원의 원주와 반지름의 비 (2π).
public static final double DEGREES_TO_RADIANS ... RADIANS_TO_DEGREES — 각도 변환 상수예요.
주요 함수들:
public static double abs(double a) — double 값의 절댓값을 반환해요. 오버로드로 abs(float), abs(int), abs(long)이 있어요.
public static double ceil(double a) — 인자보다 크거나 같은 가장 작은 double 값을 반환해요 (올림).
public static double floor(double a) — 인자보다 작거나 같은 가장 큰 double 값을 반환해요 (내림).
public static double round(double a) — 반올림해 가장 가까운 long을 반환해요.
min(double a, double b) / max(double a, double b) — 최솟값·최댓값을 반환해요 (여러 기본 타입 오버로드).
public static double sqrt(double a) — 양수 제곱근을 반환해요.
public static double cbrt(double a) — 세제곱근을 반환해요.
public static double pow(double a, double b) — a의 b 거듭제곱을 반환해요.
public static double exp(double a) — 오일러 수 e의 a 승을 반환해요.
public static double expm1(double a) — e의 a 승에서 1을 뺀 값을 반환해요.
public static double log(double a) — 자연 로그(밑 e)를 반환해요.
public static double log10(double a) — 밑이 10인 로그를 반환해요.
public static double log1p(double a) — 1 + a의 자연 로그를 반환해요.
삼각 함수:
sin(double a) / cos(double a) / tan(double a) — 사인·코사인·탄젠트를 반환해요.
asin(double a) / acos(double a) / atan(double a) — 아크사인·아크코사인·아크탄젠트를 반환해요.
atan2(double y, double x) — 직각 좌표를 극좌표로 변환해 각도를 반환해요.
sinh(double x) / cosh(double x) / tanh(double x) — 쌍곡 사인·코사인·탄젠트를 반환해요.
toRadians(double angdeg) ... toDegrees(double angrad) — 각도를 라디안·도로 변환해요.
public static double random() — 0.0 이상 1.0 미만의 양의 부호 double 값을 반환해요. 같은 시드를 사용한 java.util.Random 인스턴스처럼 동작하는데, StrictMath.random()은 Math.random()과 달리 결정론적이에요.
public static int floorDiv(int x, int y) ... floorMod — 바닥 나눗셈·모듈로를 반환해요.
public static double copySign(double magnitude, double sign) ... nextAfter, nextUp, nextDown, scalb, ulp, signum, hypot — IEEE 754 부동소수점 유틸리티 메서드들이에요.
StrictMath는 결정론적 결과가 중요한 애플리케이션(예: 과학 계산, 동일한 결과를 여러 플랫폼에서 재현해야 하는 경우)에 적합해요. Math 클래스는 성능 최적화를 위해 일부 함수를 플랫폼별로 다르게 구현할 수 있어요.