比较两个double值但结果很奇怪

时间:2015-01-18 13:07:21

标签: c++ compare double

我想比较 double 值,但结果不符合我的意图。 (我打算转到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;
}

1 个答案:

答案 0 :(得分:2)

else if(tmp>0.0);

摆脱早期结束if语句的分号。