c语言的四舍五入问题

#include"stdio.h"main(){floata,x;intb=(int)a;printf("输入一个单精度:");scanf("%f",&a);x=a-b;... #include"stdio.h"
main()
{float a,x;
int b=(int)a;
printf("输入一个单精度:");
scanf("%f",&a);
x=a-b;
if(x>=0.5)
{b=a+1;printf("四舍五入后的结果为%d",b);
}
else{b=a-1;printf("四舍五入后的结果为%d",b);
}}

每次输出都是五入,却没有在四舍
展开
 我来答
随风0127
2011-11-15 · TA获得超过197个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:220万
展开全部
#include"stdio.h"
main()
{float a,x;
//int b=(int)a;/// 这里b是0 移到下面去就行了。
printf("输入一个单精度:");
scanf("%f",&a);
int b=(int)a; // b写在这里
x=a-b;

if(x>=0.5)
{b=a+1;printf("四舍五入后的结果为%d",b);
}
else{b=a-1;printf("四舍五入后的结果为%d",b);
}}

b没有正确赋值。
更多追问追答
追问
不可以啊?我的是c语言 不是C++ 需要先定义后声明啊。。运行了 有错误
a.c(8) : error C2065: 'b' : undeclared identifier
a.c(11) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data
a.c(13) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data

a.exe - 1 error(s), 0 warning(s)
追答
#include"stdio.h"
main()
{float a,x;
int b;
printf("输入一个单精度:");
scanf("%f",&a);
b=(int)a;
x=a-b;

if(x>=0.5)
{b=a+1;printf("四舍五入后的结果为%d",b);
}
else{b=a-1;printf("四舍五入后的结果为%d",b);
}
}

我gcc编译的,没有问题。结果四舍五入正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邶丹析培
2019-02-12 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:29%
帮助的人:1156万
展开全部
除非数值超范围或者类型变了,不然不会出现四舍五入的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cfiber
2011-11-15
知道答主
回答量:23
采纳率:0%
帮助的人:22.3万
展开全部
float a= 0.0;
float x = 0.0;
printf("input");
scanf("%f",&a);
int b=(int)a;
x=a-b;
if(x>=0.5)
{b=b+1;printf("%d\n",b);
}
else{b=b-1;printf("%d\n",b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依赖dependence
2011-11-15 · 超过25用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:70万
展开全部
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
float a,x;
// int b=(int)a;
printf("输入一个单精度:");
scanf("%f",&a);
printf("%d",(int)(a+0.5));
return 0;
}
更多追问追答
追问
不懂你写的啊 我是初学者。
追答
给你说一下一个小数的四舍五入, 你就给他+0.5 ,如果他原本这个小数的小数点后大于等于5 那么他就往前进了一位, 懂了么  仔细看下程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小乐le爱剪辑
2011-11-15 · 超过31用户采纳过TA的回答
知道答主
回答量:198
采纳率:0%
帮助的人:41万
展开全部
(int)(a+0.5)
更多追问追答
追问
我需要四舍五入的效果啊
追答
下面这个程序已经通过。
#include"stdio.h"
main()
{
float a,x;
int b=(int)a;
printf("输入一个单精度:");
scanf("%f",&a);
b=(int)a;
x=a-b;

if(x>=0.5)
{
b=b+1;printf("四舍五入后的结果为%d",b);
}
else
{
;printf("四舍五入后的结果为%d",b);
}

}//

分析一下你的程序:
#include"stdio.h"
main()
{float a,x;
int b=(int)a;//在这里给b赋值,可是这时a是无值得
printf("输入一个单精度:");
scanf("%f",&a);//给a赋值了,可是b是多少,未知,所以我的程序加了b=(int)a这句话
x=a-b;
if(x>=0.5)
{b=a+1;printf("四舍五入后的结果为%d",b);//给整型变量用float型变量进行赋值,没有强制转换,

//易出错。所以我写的是b=b+1
}
else{b=a-1;printf("四舍五入后的结果为%d",b);//当是四时要舍弃小数,本身b就是a舍弃小数后的//结果,不必进行处理如a=1.4,b=(int)a=1,这其实就是正确结果,不需处理。
}}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式