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的追問奇怪,,,不過謝謝你哦
我要舉報
如果感覺以上信息為低俗/不良/侵權的信息,可以點下面鏈接進行舉報,我們會做出相應處理,感謝你的支持!
大家都在看
推薦資訊