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

请问为什么我运行成功结果却是69.400002 不应该是69.400000吗?

#include <stdio.h>
float taxiFee(int n,int t)
{
    float fee;
    if((t<23)&&(t>=5))
    {
       if(n<=3)
    {
        fee = 13+1;
    }
    else
    {
        fee = 13+1+(n-3)*2.3;
    }
    }
    else
    {
         if(n<=3)
    {
        fee = 13+1;
    }
    else
    {
        fee = 13+1+(n-3)*2.3*(1+0.2);
    }
    }
    return fee;
}
int main()
{
    float feeall;
    feeall = taxiFee(12,9)+taxiFee(12,18);
    printf("小明每天打车总费用为%f元",feeall);
}

正在回答

2 回答

float型一般保留7位有效数字,%f默认情况下输出6位小数,69.400000有效位数是8位,所以输出的最后一位是无效的。所以要么printf("小明每天打车总费用为%.3f元",feeall);

要么把float型改成定义为double型,double型精度更高。

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

#include <stdio.h>

static getMoney()

{

    double total;

    total=(13+(12-3)*2.3+1)*2;

    printf("打车费用%f\n",total); 

}

int main()

{

    getMoney();

    return 0;

}


输出:打车费用69.400000
但是如果total换成float类型的话 ,就是69.400002


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

举报

0/150
提交
取消

请问为什么我运行成功结果却是69.400002 不应该是69.400000吗?

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