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

综合练习里运行结果有个.000002元多出来不知道为什么

#include <stdio.h>

float taxi(int tim,int dis)

{

    float pay;

    if(dis>=3)

    {

        if(tim>=23||tim<=5)

        {

            pay=14+(dis-3)*2.76;

        }

        else

        {

            pay=14+(dis-3)*2.30;

        }

    }

    else

    {

        pay=14;

    }

    return pay;

}

int main()

{

    float all;

    all=taxi(9,12)+taxi(18,12);

    printf("打车的费用为%f元",all);

    return 0;

}


正在回答

2 回答

没关系的、

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

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

GAOYUHAN_95 提问者

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

printf("打车的费用为%f元",all);  //把这一句改为

printf("打车的费用为%.2f元",all);   //就会只输出两位小数

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

举报

0/150
提交
取消

综合练习里运行结果有个.000002元多出来不知道为什么

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