慕斯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语言入门
926299 学习 · 20799 问题
相似问题