C语言中的保留两位小数四舍五入的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中的保留两位小数四舍五入的问题相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
double fun ( float h )
return (long)( h * 100 + 0.5 )/ 100.0;
main( )
float a;
printf ("Enter a: "); scanf ( "%f", &a );
printf ( "The original data is : " );
printf ( "%f \n\n", a );
printf ( "The result : %f\n", fun ( a ) );

书上以以上代码实现保留两位小数和对第三位小数进行四舍五入 可是 当我输进1.555时答案为什么不是1.560000而是1.550000啊 不是说四舍五入吗

应该是精度问题。因你使用的是float变量,你可以用printf显示a*100的结果是155.499995而不是155.50000你可以全改成double型#include <stdio.h>
double fun ( double h )
return (long)( h * 100 +0.5 )/ 100.0;
main( )
double a;
printf ("Enter a: "); scanf ( "%lf", &a );
printf ( "The original data is : " );
printf ( "%lf %lf\n\n", a, a*100 );
printf ( "The result : %lf\n", fun ( a ) );

参考技术A 哈哈,我明白了,你输入1.556试试啊
似乎和 转换成二进制后的误差有关系
你输入1.5550001都是正确滴

printf(".2f", a);你试试,1.455没事,1.555也是错误的啊
参考技术B 我晕,这么下作啊????? 我的回答被人检举了 !!!!!!!!!! 我去~~~ 你把第4行的强制转换去掉也就是(long) 再编译就OK了! 刚刚检举我的人, 我**你** 真没素质!!!!!!!!!

C语言编写函数,对浮点数保留两位小数,对第三位四舍五入。程序如下 #include<stdio.h

C语言编写函数,对浮点数保留两位小数,对第三位四舍五入。程序如下 #include<stdio.h>
#include<math.h>
void sum(float x)

float a,b,c,d;
int f;
c=100*x;
b=floor(c);
a=1000*x;
d=(a-10*b);
f=floor(d);
printf("%d ",f);
if(f<5)
x=x; printf("%.2f ",x);
if (f>5)
x=x+0.01;
printf("%.2f ",x-0.01);
if(f=5)
printf("%.2f ",x+0.01);

main()

float x;
scanf("%f",&x);
sum(x);

为什么我输入3.1777时,会得到两个数3.18 3.20

 #include<math.h>
 void sum(float x)
 
 float a,b,c,d;
  int f;
  c=100*x;
  b=floor(c);
  a=1000*x;
   d=(a-10*b);
   f=floor(d);
   printf("%d ",f);  
 if(f<5)
  x=x; printf("%.2f ",x);
 if (f>5)
 x=x+0.01;
 printf("%.2f ",x-0.01);
  if(f=5)  //这里写成了赋值语句,应该是==
 printf("%.2f ",x+0.01);
 
 main()
  
  float x;
  scanf("%f",&x);
 sum(x);
 

参考技术A 呃啊。
这种事情一句话不久解决?
float a;
scanf("%f",&a);
printf("%.2f",a+0.005);
真不知道为什么要用这么多代码

不过你写的我也给你看了
你的==你写成了=

所以if(f=5)内的也被执行了
参考技术B if(f=5) = 应该是 ==
if(f == 5)追问

😭。。。好像还真是

本回答被提问者采纳

以上是关于C语言中的保留两位小数四舍五入的问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言四舍五入保留两位小数

C语言四舍五入保留两位小数

C语言编程 对变量保留两位小数 并进行四舍五入

用C语言怎么实现浮点数的四舍五入,保留两位小数点

C语言 如何实现保留三位小数,第四位四舍五入的程序

C语言编写程序,对一个double型数据进行四舍五入,要求保留两位有效小数,求算法。