当我进行浮点比较时,我会在输出屏幕中打印inf。有人能帮忙吗?
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中的较大数字?
循环的第一次迭代temp=0
,j=0
使tempDec
因除以0而无穷大。CCD_ 4将第一次为真并且将CCD_ 5设置为无穷大。从那时起,if
将始终为假。
修复代码,这样就不会被0整除。