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

为什么计算出来是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;
}

正在回答

2 回答

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

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

慕粉15600553655 提问者

非常感谢!
2016-08-28 回复 有任何疑惑可以回复我~

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

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

举报

0/150
提交
取消

为什么计算出来是69.400002

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