浮点比较C++-查找最大值



当我进行浮点比较时,我会在输出屏幕中打印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=0j=0使tempDec因除以0而无穷大。CCD_ 4将第一次为真并且将CCD_ 5设置为无穷大。从那时起,if将始终为假。

修复代码,这样就不会被0整除。

相关内容

  • 没有找到相关文章

最新更新