c语言四舍五入的设计思路是怎样的?求详细解答。。。。

如题所述

#include<stdio.h>
void main()
{
int a;
float x,i;
scanf("%f",&x);
i=x-int(x);//x减去整数部分
if(i>=0.5) a=int(x)+1;//x大于0,x小于0的情况自己写咯
else a=int(x);//c语言中类型转换是用向0取整的
printf("%d\n",a);
}

如果还需要保留多少位小数,可以这样设计程序:
以保留3位为例,x先乘1000,再按上面程序做判断,得到a值,再把a除以1000。
举个例x=1.2359
y=x*1000; //y=1235.9减去整数部分后
i=y-int(y);//i=0.9; 这时可判断是进一
a=int(y)+1;//a=1236
x=a/1000.0;//即x=1.236
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-09
加0.5然后取整
第2个回答  2011-09-09
先取出小数部分,然后把小数部分与0.5比较,大于等于的整数加一就是结果了。追问

还是不太懂,举个例子:写表达式实现实数x的四舍五入,应该怎么编写?

第3个回答  2011-09-09
判断小数位,如果小于5取整,大于等于5加1
第4个回答  2011-09-09
int x,y,z,b;
float a;
y=int(a);
z=a-y;
if (z<=0.5) b=y
else b=y+1;追问

还是看不懂,x表示什么?

追答

奥,刚才输入习惯了,多输入了,其实就是利用计算机的类型转换功能y=int(a);
来作为取整的功能。取到整数部分后就可以得到小数部分啦,然后再与0.5比较就OK了

追问

写表达式实现实数x的四舍五入,应该怎么编写呢?

追答

一个表达式么?
好像只有?:这个运算符可以判断结果吧
假设输入的值赋给变量(float)a
那么令b=(int(a)>=0.5)?(a+1):(int(a));
这种写法算是表达式法么,不知道符不符合你的要求

c语言四舍五入的设计思路是怎样的?求详细解答。。。
if(i>=0.5) a=int(x)+1;\/\/x大于0,x小于0的情况自己写咯 else a=int(x);\/\/c语言中类型转换是用向0取整的 printf("%d\\n",a);} 如果还需要保留多少位小数,可以这样设计程序:以保留3位为例,x先乘1000,再按上面程序做判断,得到a值,再把a除以1000。举个例x=1.2359 y=x*1000;...

C语言有没有数据的四舍五入?什么情况下会用到四舍五入?数据类型...
C语言中的float和double类型数据是浮点数,所以小数部分就存在四舍五入问题,当指定输出位数在精度范围之内时,系统会自动舍入,无需人工干预,如果小数部分也在精度范围内,比如10.0\/2.0 = 5.0,2位以上的输出位数时,后面的都是0,此时,当然不需要舍入了。数据类型转换有两种方式,一种是默认强...

求详细步骤,和解答思路,谢谢大神
我的 求详细步骤,和解答思路,谢谢大神  我来答 2个回答 #热议# 婚姻并不幸福的父母,为什么也会催婚?匿名用户 2014-11-26 展开全部 追问 可以照清楚点吗 本回答由提问者推荐 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 匿名用户 2014-11-26 展开全部 已赞过 已踩过< 你对这个回答的...

C语言题目,求详细解答。
答案是:x=5,y=4,a=1;过程:当x=3,y=6时 执行while(x(3)++!=(y=5))a+=1; (a=1);if(y<x) break; (因为y=5,x=4,所以不成立,因此不执行)注意:这时x因为(x++)所以,x=4;继续执行while(x++(4)!=(y=4))(因为上面y通过想减已经为5了,再减一,等4,与x...

c语言的这个编程题目怎么做呀 求详细解答
判断--x==y++时,取x=5和y=5相比,然后y变成6,比较的结果为真,于是执行--x,x先变成4,赋值给a 所以a的值是4,然后b=x++,b的值是4,然后x变成5 最后c=y; c的值变为6 所以是选择答案B

C语言菜鸟求高手解答...
2.m++>5这个判定是先取值后运算,m=5>5这个是不成立的,所以结果为假,然后m自增m=6,接着运行else printf("%d\\",m--);同样先取值运行,m=6所以输出6,之后再自减m=5但这是没有输出的,如果运行这个 main(){ int m=5;if(m++>5) printf("%d\\n",m);else printf("%d\\n",m-...

求问第一第二这两个c语言的题目怎么做。求详细的解答步骤
j = 2后, j = 2;a = ++i;该语句先i自加,再把值赋值给a,所以a = 2, i = 2 b = j++; 该语句先把j的值赋值给b,然后j自加。所以,b = 2, j = 3;第二题:执行 i = 1后, i = 1 j = 2后, j = 2 a+= i++;可以把语句进行拆分理解 a = a + i; 执行...

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是...

C语言程序设计中几个很基础的问题,求大神帮忙解答,感激不尽~~_百度...
2\/3为0 两int型相除 结果用int存储 ~m&m为0 因为自身与自身的反做交的话肯定是0 F ~(m|m)=~m=-11 此中的为二进制计算 G !m 为0 此时将m视为true true的反为false即0 (除了0都是true)H m^m=0 ^表示异或 自身异或自身则为0 D 其中 A. !(y==x\/3) x\/3为...

c语言问题,求详细解答,16,17,18,19
a+b=2+6=8(最终结果)17:应该是3.5 x+a%3*(int)(x+y)%2=(7%3)*(int)(2.5+4.7)%2+x=2.5+1*7%2=2.5+1=3.5 18:"ab\\034\\\\\\x79":ab\\034 长度3:\\034是八进制字符常量 \\\\:转义字符\\ \\x79;16进制字符常量。总共字符串长度 5 19:t=1 ,t+5,t++ t+5不改变...

相似回答