我想比较双精度值,但结果出乎我的意图。(我打算去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
语句的分号。