2014-04-22 3 views
-1

부동 소수점 비교를 수행 할 때 inf 출력 화면에 인쇄됩니다. 아무도 도와 줄 수 있습니까? 부동 소수점 비교 C++ - 최대 찾기

unsigned long long temp; 
long double tempDec=0.0,max=0.0; 
unsigned long long maxInd=0,j=0; 

for(unsigned long long i=1;i<100;i++) 
{ 
    j=i-1; 
    temp=0; 
    while(j>0) 
    { 
     if(returnGCD(j,i)==1) 
     { 
      temp++; 
     } 
     j--; 
    } 


    tempDec = ((long double)i)/((long double)temp); 

    if(tempDec>max) 
    { 
     max=tempDec; 
     maxInd=i; 
    } 
} 

cout << max << " # " << maxInd << endl; 

나는 내가 무슨 잘못 그것으로 모르는

inf # 1 

로 출력을 얻고,이 조각을 시도합니다. 우리가 fabs()를 사용할 수있는 동등한 비교를 위해서만 float에서 더 큰 수를 알아낼 수있는 특별한 방법이 있습니까? tempDec을 루프

답변

3

첫 반복, temp=0, j=0 사실이 처음이다 if(tempDec>max) 0으로 인해 분열의 무한대와 무한대 max를 설정한다. 그 이후부터는 if이 항상 거짓입니다.

0으로 나누지 않도록 코드를 수정하십시오.