c语言同一题目求解结果用float和int输出值差1.
答案:3 信息版本:手机版
解决时间 2018-12-08 22:35
已解决
2018-12-08 05:38
c语言同一题目求解结果用float和int输出值差1.
最佳答案
2018-12-08 06:01
试试这样就好了
#include main()
{
long i;
float j,j1,j2,j4,j6,j10;
j1=100000*0.1;
j2=j1+100000*0.075;
j4=j2+200000*0.05;
j6=j4+200000*0.03;
j10=j6+400000*0.015;
scanf("%ld",&i);
if(i<=100000)
j=i*0.1;
else if(i<=200000)
j=j1+(i-100000)*0.075;
else if(i<=400000)
j=j2+(i-200000)*0.05;
else if(i<=600000)
j=j4+(i-400000)*0.03;
else if(i<=1000000)
j=j6+(i-600000)*0.015;
else
j=j10+(i-1000000)*0.01;
printf("%ld\n",long(j));
}
i根本不需要long型。用int就够了。
#include main()
{
int i;
float j,j1,j2,j4,j6,j10;
j1=100000*0.1;
j2=j1+100000*0.075;
j4=j2+200000*0.05;
j6=j4+200000*0.03;
j10=j6+400000*0.015;
scanf("%ld",&i);
if(i<=100000)
j=i*0.1;
else if(i<=200000)
j=j1+(i-100000)*0.075;
else if(i<=400000)
j=j2+(i-200000)*0.05;
else if(i<=600000)
j=j4+(i-400000)*0.03;
else if(i<=1000000)
j=j6+(i-600000)*0.015;
else
j=j10+(i-1000000)*0.01;
printf("%d\n",long(j));
}
输出结果正确。追问哦,谢谢,这个是强制转换吗?追答恩,是的。
全部回答
1楼
2018-12-08 07:27
这不是树上的例题吗?追问嗯,但是我们老师要求输出整数啊,不要留小数点,我我用整数输出的值要差1.
2楼
2018-12-08 07:16
float 是但精确度
double 是双精确度
int是整数
用float 和double 的时候输出的时候最好加上小数点像是
printf("%lf.2",a);
就精确到了2 位小数。。
float输出17500.000000 这是电脑默认的
如果我想输出17500的整数。。。。。这是你的公式计算吧,跟你用的float 和int 无关。。。追问但用int输出时是17499,差1怎么回事?追答我运行了下第二个是17500啊。。追问
我用c-free5运行就这样啊追答
我的正常啊。。。CFREE3.5的追问奇怪,,,不过谢谢你哦
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯