用C语言如何实现 输入一个double 类型的数后 使该数保留小数点后两位 对第三个数进行四舍五入处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言如何实现 输入一个double 类型的数后 使该数保留小数点后两位 对第三个数进行四舍五入处理相关的知识,希望对你有一定的参考价值。
方法有很多。(我尽量把思想写明白点,代码你自己去写,有助你弄懂它)方法一:比如这个数是a,你先拿a乘1000取整给b(b是整型的),然后判断b%10是否大于4,是的话,做b=b/10;a=b/100.0+0.01;
小于或等于的话做b=b/10;a=b/100.0; 注:是b/100.0不是b/100。因为整型/整型得到的结果还 是整型,而你要的结果是实型。
方法二:用数组来存放这个数,如 char a[20];gets(a);
然后判断“.“(小数点)在哪个位置,然后判断小数点后的第三位是否大于'4',
是的话,小数点第二位加1,然后从小数点第二位往前扫描只要有大于'10'(出小数点外)就前一位加1(怎么加?是a[i-1]+1还是((a[i-1]-'0')+1)+'0').
如果扫描不到小数点说明是整数,什么都没必要做了,怎么判断有没有小数点?很简单,可以用一个量int a=0;用a记下小数点的位置,如果a的值最后还是0,说明是整数,要不然你也知道小数点的位置了。
注:建议用方法1,代码短也简单,方法2涉及的知识点多,有一点难度,不过在做高精度的时候,是一个很好的方法,还有:4==‘4’ -'0' ,'0'!=0,为什么? 因为字符'0'的编码是48,不是0. 参考技术A 上面的不是四舍五入好不?
我写的这个可以..
#include<stdio.h>
#include<math.h>
double rounding(double x,int n);
void main()
double x,x1;
int n;
printf("请输入一个浮点数:\n");
scanf("%lf",&x);
printf("请输入给定的小数位:\n");
scanf("%d",&n);
x1=rounding(x,n);
printf("圆整后的数为:\n%.*lf\n",n,x1);
double rounding(double x,int n)
double s;
s=(int)(x*pow(10,n)+0.5)/pow(10,n);
return s;
参考技术B double d=1.23456;
printf("%.2f",d);
在输出的时候,.2 就是保留两位小数的意思,自动四舍五入。
保留3位同理用 %.3f
c语言double类型输出问题及字符输入问题
#include<stdio.h>
void main()
double x;
char str[10],ch;
/*以下为输入一个double类型的数*/
scanf("%f",&x);
printf("%f\n",x);
/*问题1:以上结果为什么输出了一个随机数??*/
/*以下为输入一个字符串*/
scanf("%s",str);
/*以下为输入一单个字符*/
/*问题2:为什么没有相应的输入中断???*/
scanf("%c",&ch);
printf("%c\n",ch);
/*问题3:以上输出结果为什么单个字符没有被赋值???*/
printf("%s\n",str);
问题在以上程序注释中
编译环境是VC++6.0
你输入字符串时,肯定按了回车,而回车实际上输入了2个字符,第1个被用来确认scanf结束,还有一个仍然保留在了缓冲区内,被scanf("%c",&ch);读到了,这个字符是个控制字符,所以不可见.
在任何读取字符的语句之前,你最好用fflush(stdin);来清空一下缓冲区. 参考技术A #include<stdio.h>
void main()
double x;
char str[10],ch;
/*以下为输入一个double类型的数*/
scanf("%lf",&x);
printf("%lf\n",x);
/*%f改成%lf OK*/
/*以下为输入一个字符串*/
scanf("%s",str);
/*以下为输入一单个字符*/
/*scanf遇到空格或者回车自动结束*/
getchar();/*加一个用来存储回车键就OK或者fflush(stdin); 也可以*/
scanf("%c",&ch);
/*因为回车键也是一个字符。所以你在输完字符的时候回车的时候。他会把他当成字符存储到ch。你看一下你的是两行空格加两行\n是四行空格。*/
printf("%c\n",ch);
/*问题3:以上输出结果为什么单个字符没有被赋值???*/
printf("%s\n",str);
不懂可以hi我
以上是关于用C语言如何实现 输入一个double 类型的数后 使该数保留小数点后两位 对第三个数进行四舍五入处理的主要内容,如果未能解决你的问题,请参考以下文章
写一段简单的c语言程序: 输入一个double类型的数,使它保留小数点后两位,对第三位四舍五入处理