十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
# incloud stdio
创新互联专业为企业提供山阳网站建设、山阳做网站、山阳网站设计、山阳网站制作等企业网站建设、网页设计与制作、山阳企业网站模板建站服务,十多年山阳做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。
要用C语言实现四舍五入,有一个很巧妙的方法,仅使用int i=(int)(a+0.5)即可。如果遇到有负数的情况,只需要将加号改为减号即可。
C语言中四舍五入这样表示:
inta=100.453627。
printf("%.1f",a+0.05);//四舍五入到十分位。
printf("%.2f",a+0.005);//四舍五入到百分位。
以此类推,对于十进制小数.5类型数(如0.5,11.5,18.5),即小数部分可以以2的负一次方来表示的数,这时计算机是可以“完美”的储存这个十进制小数字。而对于.6,.7,.8,.9与.4,.3,.1,.2,这类数字,计算机虽然无法“完美”的储存这些数字,在这样的情况下可以运用所谓的“+0.5的取整法”。
所谓加0.5的取整法就是运用在C语言中浮点型数强制转化为整形数时只会其保留整数,而不会进行四舍五入的计数法则。所以对于保留整数的小数来说,我们只需在其原来的基础上+0.5后再进行强制类型转换,就可以达到不会出错的四舍五入。
有的标准不存在C语言四舍五入:
C语言中的四舍五入在C98标准中,标准C函数库是没有关于四舍五入的函数的,到了C99标准才出现了ceil(),floor(),nearbyint(),round()之类丰富的取整函数。
现在使用的gcc都是C99标准了,而Windows下的VC(包括VS2008)还是C98标准,所以需要遵从严格格式,包括没有内联inline、没有单行注释//、变量要写在代码块的前头等等,最大的缺点就是没有那些函数的支持。
c99 开始有 round() 函数处理 四舍5入。
函数原型:
double round (double x);
float roundf (float x);
long double roundl (long double x);
C++11 有 double round (T x);
----
低于c99 的可以自己写,例如: 绝对值+0.5,
绝对值函数原型:
double fabs (double x);
float fabs (float x);
long double fabs (long double x);
正数和负数的 四舍5入 有天花板和地板的 处理,由你自己选择(上靠,下靠) 。
天花板和地板函数原型:
double ceil (double x);
float ceil (float x);
long double ceil (long double x);double floor (double x);
float floor (float x);
long double floor (long double x);
# incloud stdio
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。
# incloud stdio
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。
round(x)
参数时double型,返回小数对整数部分的四舍五入值
比如 round(3.623); 返回4