#include <stdio.h>
float TS(int t,int s)//t时间,s路程
{
float m;//费用
if(s<=3)
{
m=14;
}
else
{
if(t<5 || t>=23)
{
m=14+(s-3)*2.3*1.2;
}
else
{
m=14+(s-3)*2.3;
}
}
return m;
}
int main()
{
printf("小明每天打车的总费用:%f\n",TS(9,12)+TS(18,12));
return 0;
}
这个用十进制进行计算的话为69.4,用程序进行运算反而多出来00002,其实这和计算机的运行原理有关,我们知道整数十进制转二进制可以完美运行,但是小数十进制转为二进制却没有那么简单. 0.4转化为二进制是0.0110 0110 0110 ... (0110为循环节),这里的% f 是取六位小数,所以会造成这样的结果.
请问一下为什么用9/18和23-5点去比较?