用C语言如何实现 输入一个double 类型的数后 使该数保留小数点后两位 对第三个数进行四舍五入处理 如何将一个double类型的数四舍五入保留两位小数

C\u8bed\u8a00\u7f16\u7a0b\uff1a\u8f93\u5165\u4e00\u4e2adouble\u6570\u503c\uff0c\u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570\u5bf9\u7b2c\u4e09\u4f4d\u56db\u820d\u4e94\u5165\u3002\u6211\u7684\u7f16\u7a0b\u7ed3\u679c\u4e0d\u5bf9\uff0c\u6c42\u6307\u6559

double x;int y;
scanf("%lf",&x);
x=x*100;
y=int(x+0.5);
x=y/100.0;
printf("%0.2lf",x);

\u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570

方法有很多。(我尽量把思想写明白点,代码你自己去写,有助你弄懂它)
方法一:比如这个数是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.

上面的不是四舍五入好不?
我写的这个可以..
#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;
}

double d=1.23456;

printf("%.2f",d);

在输出的时候,.2 就是保留两位小数的意思,自动四舍五入。
保留3位同理用 %.3f

扩展阅读:电子琴指法图 口诀 ... c语言新手入门代码 ... 新手怎么学代码编程 ... c语言&符号 ... c语言基础知识入门 ... double在c语言%后加什么 ... c++编程 ... c语言如何输出 nb ... c语言符号大全表解释 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网