为什么float类型总是算出来是近似值?
#include<stdio.h>
//计算正常里程价格
double fDistance(float n)
{
double u = 2.3;
double p = 0.0;
if (n <= 3.0 && n > 0.0) //里程合法性
{
return 13.0;
}
else if (n > 3.0)
{
p = u * (n-3.0) + 13.0; //加上基础13元,减去3km基础里程
return p;
}
else
{
printf("里程数据错误\n");
return 0.0;
}
}
//计算时间段价格增加部分
double fTime(float t)
{
if (t < 23.0 && t >= 5.0)
{
return 1.0;
}
else if(t<24.0 && t>0.0) //时间合法性
{
printf("时间数据错误\n");
return 0.0;
}
else
{
return 1.2;
}
}
int main()
{
double Total1 = 0.0;
double Total2 = 0.0;
Total1 = fDistance(12.0) * fTime(9.0)+1.0; //加额外的燃油附加费
Total2 = fDistance(12.0) * fTime(18.0)+1.0;
printf("小明每天打车费用总计:%lf 元",Total1+Total2);
return 0;
}