C语言怎么四舍五入

Posted

tags:

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

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

参考技术A 利用取整。
比如 四舍五入到千分位,可以
(int)(x*1000+0.5)/1000.0
十分位(int)(x*10+0.5)/10.0
其他类似,只改变其中倍数的值即可。
参考技术B C,
(int)(x*100+0.5)中x*100就把小数点后两位移到整数部分了,然后强制转换为int,再除以float,所以结果为小数点后两位,其他也可以,不过不是保留两位小数。
你假设x=123.456
x*100+0.5=12345.6+0.5=12346.1//这里加0.5是为了4舌5入
然后强制转化成int
为12346
再除以100
结果

123.46
这样就做到了保留到小数点后两位,并将第3位四舍五入
参考技术C 利用取整运算的截断特点实现。
比如:int a=0.75;取整后赋值给a的是0,小数点后面的被截断了。
如果要做整数的四舍五入,那么可以:a=(int)(0.75+0.5);取整后得到的与数学中四舍五入的结果一致,都是1;
如果要进行小数点后面的四舍五入,可以这样计算:
要保留小数点后面两位的小数,即在小数点后面两位上做四舍五入,0.756
float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100;
运算是这样的:先将0.756乘以100,得到75.6,然后利用取值运算的截断做四舍五入,75.6+0.5=76.1取整后等于76,再除以100,得到结果:0.76

C语言中如何对浮点数进行四舍五入?

据说%.3f是可以,但我自己测试时不行......
如果不行的话,请问一般怎么做???

C语言中对于浮点数输出的四舍五入是自动进行的。在浮点数的有效位数范围内,当要求保留小数点后n位时,系统会自动根据第n+1的值自动进行四舍五入操作。以下代码可以验证:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void)
    double pi=3.141592653589793;
    printf("%.15f\\n",pi);
    printf("%.3f\\n",pi);//保留3位小数,因第4位是5而进位
    printf("%.5f\\n",pi);//保留5位小数,因第6位是2而舍弃
    return 0;

输出是:

3.141592653589793

3.142

3.14159

参考技术A %.nf,其中n是字面常量,功能是输到小数点后面的第n位,第n + 1位“四舍五入”。下面是在VC++ 6.0环境下的测试结果。
/*
0.234562
0.235
0.2346
0.23456
Press any key to continue
*/
#include <stdio.h>
int main()
float f = 0.2345623f;
printf("%f\n",f);
printf("%.3f\n",f);
printf("%.4f\n",f);
printf("%.5f\n",f);
return 0;本回答被提问者采纳
参考技术B %.3f 的意思是输入小数点之前的三位数,比如说: 12.1234 会输出:12.123,

0.1236会输出:0.123 。之后的数字会被直接无语!
你可以用下面的方法(不过这个方法只适合正数,负数就不行了)
float a = 1.1235; //保留到小数点后三位
float b =(int)((a * 1000) + 0.5) / 1000.0;
//output b = 1.124;追问

 

好奇怪,这次又可以了,上次是输出2个2.34。。。。

参考技术C 加个0.5再取整数,如:1.4 0.5取整1;1.5 0.5取整2。

以上是关于C语言怎么四舍五入的主要内容,如果未能解决你的问题,请参考以下文章

C语言,一个浮点数,怎么四舍五入保留到个位数

C语言中数值转换啥时候需要四舍五入,啥时候不需要?如3.1415926转换成%f就是3.141

C语言有没有数据的四舍五入?啥情况下会用到四舍五入?数据类型转换?

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

c语言中如何进行四舍五入,求详细解释!!谢谢!

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