为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

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


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信