c语言怎么实现四舍五入?

给你个简单的饿例子四舍五入小数点后一位floatf=1.54536;f=(int)(f*10+5)/10.0;你分析看看就知道了[mw_shl_code=c,true]#... 给你个简单的饿例子四舍五入小数点后一位float f=1.54536;f=(int)(f*10+5)/10.0;你分析看看就知道了[mw_shl_code=c,true]#includemain(){float f=1.54536;f=(int)(f*10+5)/10.0; printf("%f\n",f);}[/mw_shl_code] 展开
 我来答
惠企百科
2022-12-02 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

# 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相同。

杜哥是个小天才
2018-08-27 · TA获得超过1809个赞
知道答主
回答量:32
采纳率:0%
帮助的人:8948
展开全部

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;

}

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。



本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
跪着作揖
高粉答主

2018-12-02 · 繁杂信息太多,你要学会辨别
知道答主
回答量:598
采纳率:100%
帮助的人:16.3万
展开全部

# 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相同。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-04
展开全部
有必要熟悉下 c语言 运算优先级
圆括号> 类型转换 > 乘除和取模 > 加减

() > (int) > * / > +

所以
f=(int)(f*10+5)/10.0
=(int)(1.54536*10+5)/10.0
=(int)(15.4536+5)/10.0
=(int)(20.4536)/10.0 //int 取整,就是舍去全部小数
=20/10.0
=2.000000 //默认 6位小数

其实,本人觉得,用以下的就可以实现了
f=(int)(f+0.5) // +0.5的意义就是让 小数>=0.5的变成 +1,而<0.5的 不到1,将被舍去
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2ebe1e4f3
推荐于2017-09-12 · TA获得超过1.3万个赞
知道大有可为答主
回答量:9245
采纳率:52%
帮助的人:3231万
展开全部
设 float x ; int y ; 则有
y=(int)(x+0.5)>(int)x?(int)x+1:(int)x
进行上述运算后,y 的值就是 x 四舍五入的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式