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

为什么计算出来是69.400002

#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;
}

提问者:慕粉15600553655 2016-08-27 13:48

个回答

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

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

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

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