우선 StrictMath클래스의 사용방법은
수학계산을 하는 메서드가 들어있는 Math클래스와 같다고 생각하자.
public class MathComparisonExample {
public static void main(String[] args) {
double angle = 45.0; // 각도 (라디안이 아닌 도 단위)
// Math 클래스를 사용한 삼각 함수 계산
double sinValueMath = Math.sin(Math.toRadians(angle));
double cosValueMath = Math.cos(Math.toRadians(angle));
System.out.println("Using Math class:");
System.out.println("Sin(" + angle + " degrees): " + sinValueMath);
System.out.println("Cos(" + angle + " degrees): " + cosValueMath);
// StrictMath 클래스를 사용한 삼각 함수 계산
double sinValueStrictMath = StrictMath.sin(Math.toRadians(angle));
double cosValueStrictMath = StrictMath.cos(Math.toRadians(angle));
System.out.println("\nUsing StrictMath class:");
System.out.println("Sin(" + angle + " degrees): " + sinValueStrictMath);
System.out.println("Cos(" + angle + " degrees): " + cosValueStrictMath);
}
}
https://standout.tistory.com/1207
그렇다면 차이에 대해 살펴보자.
위 코드의 실행결과는 보면 비슷하나 다르다.
Math클래스는 최대한의 성능을 위해 JVM이 설치된 OS의 메서드를 호출후 의존해 사용하는데
부동소수점 계산 등의 경우에 반올림 등의 처리방법 설정이 OS마다 달라
자바로 작성된 프로그램임에도 불구하고 컴퓨터마다 결과가 다를 수 있다.
Using Math class:
Sin(45.0 degrees): 0.7071067811865475
Cos(45.0 degrees): 0.7071067811865476
Using StrictMath class:
Sin(45.0 degrees): 0.7071067811865475
Cos(45.0 degrees): 0.7071067811865475
이러한 차이를 없애기 위해 성능을 다소 포기하는 대신
어떤 OS에서 실행되어도 항상 같은 결과를 얻도록 Math클래스를 새로 작성한 것이 StrictMath클래스.
'JAVA' 카테고리의 다른 글
java.util.Random 클래스 (0) | 2023.12.22 |
---|---|
Object클래스를 보완하다, java.util.Objects 클래스 (0) | 2023.12.22 |
수학계산 메서드 모음집, Math클래스 (0) | 2023.12.22 |
ajax 검색기능 구현하기 (0) | 2023.12.22 |
Math클래스: Exact 메서드 (0) | 2023.12.14 |