2017-03-11 3 views
1

약간 문제가 있습니다. 나는 각각 값 1 * 10^250을 갖는 두 개의 이중 변수를 가진다. 이제이 두 값을 곱하면 결과가 이중 변수가됩니다. 문제는 곱셈의 결과가 나에게 무한대 값을 주지만이 문제를 방지하고 오류 메시지를주고 싶습니다. 따라서 누군가가 무한대인지 식별하는 방법을 아는 것이 좋을 것입니다.C# 숫자가 무한대인지 확인하는 방법

답변

2

사용

double.IsInfinity(theDoubleNumber); 

당신은 또한 유사한 목적을위한 double.IsNegativeInfinity(), double.IsPositiveInfinity()가 Double.NaN(), double.MaxValue(), double.MinValue()를 사용할 수 있습니다

0
**try this.....** 
    if (Double.IsInfinity(SampleVar)) 
    { 
     //Put your logic here. 
    } 
    if (Double.IsNaN(SampleVar)) 
    { 
     //Put your logic here. 
    } 
+1

을이 코드가 해결 될 수도 있지만 원한입니다 : Simplyt을 당신이 변수를 곱 할 경우, 오류를 잡으려고 곱 전에 A와 B는이 의사 코드를 따라 있습니다 질문 [설명 포함] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)은 게시물의 품질을 향상시키는 데 정말로 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. – DimaSan

-3

2 개의 변수의 대수를 추출하고이를 더하는 것으로 충분합니다.

#include <math.h> 
Double A,B,L1,L2; 
Boolean MYERROR; 
main(){ 
L1 = LOG10(A); 
L2 = LOG10(B); 
If((L1 + L2) > DBL_MAX_10_EXP){ MYERROR = true;}else{MYERROR = false;} 
} 
+1

질문은 C#에 관한 것이며, 유효하지도 않습니다. C 중 하나가 양수가 아닌 경우에도 작동하지 않습니다. 정규화 된 수의 지수가 최대 값을 초과 함에도 불구하고 'a * b'가 여전히 표현 가능한 경우는 제외됩니다. 일반적인 기술에는 응용 프로그램이 있지만 무한대를 확인하는 것보다 훨씬 복잡합니다. –

+0

나는 동의한다, 그것은 단지 긍정적 인 것들을 위해 일할 수있다. 제가 제시 한 해결책은 단순히 양수에 관한 질문 인 것입니다. 또한 의사 코드라고 썼습니다. C#이나 C도 마찬가지입니다. 반면에 지수가 예상 값을 초과하는 double은 꽤 저장 가능합니다. 그러나 치명적인 오류가 발생할 수 있으므로 피하는 것이 좋습니다. – Nicolas

관련 문제