用 double 类型计算最后结果为什么会有一点差距

来源:5-14 综合练习

慕斯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;
}


写回答 关注

1回答

  • Allen51
    2019-11-04 21:28:30

    因为double类型是以二进制形式储存的, 转换成十进制时只能做近似的转换,即使是一个确定值,他在做转换的时候也可能产生误差,因为并不是每一个十进制的小数都能用二进制表示。例如0.3你就无法用一个二进制数表示出来。

    对于此问题,最好的办法是:由于已知人民币一般用元角分计算,便限制只输出两位小数,用%.2f


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926299 学习 · 20799 问题

查看课程

相似问题