问答详情
源自:5-14 综合练习

请问为什么我运行成功结果却是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);
}

提问者:慕粉4238264 2019-04-15 20:35

个回答

  • 慕盖茨8459604
    2019-04-17 18:03:25

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

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

  • 流年123456789
    2019-04-17 17:24:04

    #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