比较两个双精度值但结果很奇怪



我想比较精度值,但结果出乎我的意图。(我打算去for循环,结果是去else if)我不明白为什么会出现这个结果,有谁知道为什么会出现这个结果?

#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int count=0;
double money_arr[11]={100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05};

bool double_compare(double a, double b)
{
    return fabs(a-b)<0.0001?true:false;
}
void case_num(double n, double sum)
{
    double tmp = (double)sum-n;
    printf("n: %lf sum :%lf",n, sum);
    if(double_compare(n,sum))
    {
        count++;
        return;
    }
    else if(tmp>0.0);
    {
        cout<<"DSsfdsd";
        return ;
    }
    for(int i=10; i>=0; i++)
    {
        cout<<i<<endl;
        if(n-sum>money_arr[i])
        case_num(n, sum+money_arr[i]);
    }
}
int main()
{
    double n;
    if((double)0.20>(double)0.1)
        cout<"esdfkjsldf";
    cin>>n;
    //cout<<n;
    case_num(n,0);
    //cout<<count<<endl;
}
else if(tmp>0.0);

摆脱提前结束if语句的分号。

相关内容

  • 没有找到相关文章

最新更新