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);
}}
每次输出都是五入,却没有在四舍 展开
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);
}}
每次输出都是五入,却没有在四舍 展开
展开全部
#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没有正确赋值。
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编译的,没有问题。结果四舍五入正确。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除非数值超范围或者类型变了,不然不会出现四舍五入的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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 那么他就往前进了一位, 懂了么 仔细看下程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(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,这其实就是正确结果,不需处理。
}}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询