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

为啥a分别用int和double定义结果不同

#include <stdio.h>

int main()

{

    double a,sum;

    int b,d,e;   /*a是单价2.3;b是要走距离;e是打车距离;d是时间段;*/

    d=9;

    e=12;

    sum=13;

    a=2.3;

    if(e<=3)

    goto LOOP;

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

        a=a*1.2;

    for(b=3;b<=e;b++)

    {

        

        sum=sum+a;

    }

    LOOP:sum+=1;

    printf("车费%f\n",sum);

    return 0;

}


正在回答

2 回答

C中没有四舍五入的说法,而是归零法。比如2.3强制化为整数后是2,而2.9强制化为整数之后也是2.

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

慕虎7192974 提问者

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

double是双精度浮点型,要求小数点后精确位数更多;而int是整型,因而二者在保留小数位数不同的情况下(如四舍五入)结果不同

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

慕虎7192974 提问者

那应该是double更精确啊,但为什么int算下的和答案最相近呢?
2016-02-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为啥a分别用int和double定义结果不同

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