2010-01-19 3 views
1

NaN에 대한 방법이 있지만 0으로 나누면 무한 또는 음의 무한대가 만들어집니다.C#에서 double이 실수인지 확인하는 방법이 있습니까?

무한대 (또한 무한대 및 음수 무한대)에 대한 방법이 있습니다.

내가 원하는 것은 값이 표현 가능한 숫자 일 때 true를 반환하는 IsARealNumber 함수입니다.

분명히 나는 ​​...

public bool IsARealNumber(double test) 
{ 
    if (double.IsNaN(test)) return false; 
    if (double.IsInfinity(test)) return false; 
    return true; 
} 

을 내 자신을 작성할 수 있습니다하지만 난에해야처럼은 보이지 않는다.

+2

return! double.IsNaN (test) &&! double.IsInfinity (test); // 3.5 프레임 워크에서는 확장 메서드로 만들 수도 있습니다. – GalacticCowboy

+2

이제 글을 작성 했으므로 다시 쓰지 않아도됩니다 :-) – paxdiablo

+0

거기에 있어야하는 것처럼 보이지 않습니까? @GalacticCowboy, 방금 확장 메소드를 발견했습니다. 어떻게 추가합니까? –

답변

5

확장 메서드로 추가하려면 정적 클래스의 정적 멤버 여야합니다.

public static class ExtensionMethods 
{ 
    public static bool IsARealNumber(this double test) 
    { 
     return !double.IsNaN(test) && !double.IsInfinity(test); 
    } 
} 
+0

끝내 주셔서 감사합니다. –

+0

이 ExtensionMethods를 객체에만 추가 할 수 있으며 적절한 클래스에서 중단하지 않는다고 가정하면됩니다. 더블과 같아 .NaN (더블)은? –

+0

나는 그것이 옳다고 믿습니다. 그것은 "this"매개 변수의 유형을 사용하여 적용 대상을 결정하며 정적 인 것으로 허용됩니다 (따라서 정적 멤버로 클래스에서 중단시킬 수 있음). – GalacticCowboy