C#의 Math.Acos() 메서드는 지정된 숫자를 코사인(cosine) 값으로 갖는 각도, 즉 아크코사인(역코사인)을 반환합니다. 인수로 전달되는 값은 double 형식이어야 하며, 반환되는 각도는 라디안(radian) 단위입니다.
문법(Syntax)
Math.Acos() 메서드의 기본 문법은 다음과 같습니다.
public static double Acos (double val);
여기서 val은 코사인 값을 나타내는 숫자입니다. 이 값은 반드시 -1 이상 1 이하 범위 내에 있어야 합니다. 범위를 벗어난 값이나 NaN, 무한대 같은 특수한 값이 입력되면 NaN(Not a Number)이 반환됩니다.
예제 1: 특수 값 처리 확인
다음 예제는 0, 양의 무한대, NaN을 Math.Acos() 메서드에 전달했을 때의 결과를 보여줍니다.
using System;
public class Demo {
public static void Main(){
double val1 = -0.0;
double val2 = Double.PositiveInfinity;
double val3 = Double.NaN;
Console.WriteLine("Return value of {0} : {1}", val1, Math.Acos(val1));
Console.WriteLine("Return value of {0} : {1}", val2, Math.Acos(val2));
Console.WriteLine("Return value of {0} : {1}", val3, Math.Acos(val3));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
Return value of 0 : 1.5707963267949 Return value of ∞ : NaN Return value of NaN : NaN
코사인 값이 0일 때는 π/2에 해당하는 약 1.5707963267949 라디안이 반환되며, 무한대나 NaN이 입력되면 유효한 각도가 존재하지 않으므로 NaN이 반환됩니다.
예제 2: 유효 범위를 벗어난 값 처리
이번에는 코사인 값의 유효 범위(-1 ~ 1)를 벗어난 -30과 30, 그리고 정상 범위인 0을 전달하는 예제입니다.
using System;
public class Demo {
public static void Main(){
double val1 = -30.0;
double val2 = 30.0;
double val3 = 0;
Console.WriteLine("Return value of {0} : {1}", val1, Math.Acos(val1));
Console.WriteLine("Return value of {0} : {1}", val2, Math.Acos(val2));
Console.WriteLine("Return value of {0} : {1}", val3, Math.Acos(val3));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
Return value of -30 : NaN Return value of 30 : NaN Return value of 0 : 1.5707963267949
-30과 30처럼 코사인 값으로 정의될 수 없는 숫자(-1 미만 또는 1 초과)를 전달하면 NaN이 반환되고, 유효한 값인 0을 전달하면 정상적으로 각도가 계산됩니다.
정리
- Math.Acos()는 코사인 값에 해당하는 각도를 라디안 단위로 반환합니다.
- 입력값은 -1 이상 1 이하의 double 값이어야 합니다.
- 범위를 벗어난 값, 무한대(∞), NaN이 입력되면 NaN이 반환됩니다.
- 결과를 도(degree) 단위로 변환하려면 반환값에
180 / Math.PI를 곱하면 됩니다.