慕斯7371441
2019-10-14 01:23
double money(int s,int t)
{
double M=13;
M+=1;
if (s<3)
{return M;}
double permile=2.3;
if(t>=23||t<5)
{
permile*=1.2;
}
M+=(s-3)*permile;
return M;
}
int main()
{
double cost=money(12,9)+money(12,18);
printf("小明每天的打车费为%f\n",cost);
return 0;
}
因为double类型是以二进制形式储存的, 转换成十进制时只能做近似的转换,即使是一个确定值,他在做转换的时候也可能产生误差,因为并不是每一个十进制的小数都能用二进制表示。例如0.3你就无法用一个二进制数表示出来。
对于此问题,最好的办法是:由于已知人民币一般用元角分计算,便限制只输出两位小数,用%.2f
C语言入门
928072 学习 · 21543 问题
相似问题