为什么计算出来是69.400002

来源:5-14 综合练习

慕粉15600553655

2016-08-27 13:48

#include <stdio.h>
float TS(int t,int s)//t时间,s路程
{
    float m;//费用
    if(s<=3)
    {
        m=14; 
    }
    else
    {
        if(t<5 || t>=23)
        {
            m=14+(s-3)*2.3*1.2;   
        }
        else
        {
            m=14+(s-3)*2.3;   
        }
    }
    return m;
}
int main()
{
    printf("小明每天打车的总费用:%f\n",TS(9,12)+TS(18,12));
    return 0;
}

写回答 关注

2回答

  • qq_哗哗_03383445
    2016-08-27 16:28:21
    已采纳

    这个用十进制进行计算的话为69.4,用程序进行运算反而多出来00002,其实这和计算机的运行原理有关,我们知道整数十进制转二进制可以完美运行,但是小数十进制转为二进制却没有那么简单. 0.4转化为二进制是0.0110 0110 0110 ...  (0110为循环节),这里的% f 是取六位小数,所以会造成这样的结果.

    慕粉1560...

    非常感谢!

    2016-08-28 13:44:56

    共 1 条回复 >

  • 幼稚王
    2016-09-01 17:11:27

    请问一下为什么用9/18和23-5点去比较?

C语言入门

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

926207 学习 · 20797 问题

查看课程

相似问题