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啊 不是说四舍五入吗
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
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语言中的保留两位小数四舍五入的问题的主要内容,如果未能解决你的问题,请参考以下文章