본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

StrictMath 클래스와 Math클래스

우선 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클래스

Math클래스 Math클래스는 접근 제어자가 private이기에 다른클래스에서 Math 인스턴스를 생성할 수 없다. Math클래스의 메서드는 모두 static으로 구성된다. 기본적으로 올림, 버림, 반올림을 할 수 있다

standout.tistory.com

 

 

 

그렇다면 차이에 대해 살펴보자.

위 코드의 실행결과는 보면 비슷하나 다르다.

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클래스.