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

来源:5-14 综合练习

慕粉4238264

2019-04-15 20:35

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

  • 慕盖茨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


C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题