c语言四舍五入取整
Ⅰ c语言中如何取整
参与运算量均为整型时,
结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
printf("%d,%d\n",10/3,-10/3);
printf("%f,%f\n",10.0/3,-10.0/3);
c语言有以下几种取整方法:
1、直接赋值给整数变量。如:
int
i
=
2.5;
或
i
=
(int)
2.5;
这种方法采用的是舍去小数部分,可以用于你的问题。
2、c/c++中的整数除法运算符"/"本身就有取整功能(int
/
int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的c编译器有关。
3、使用floor函数。floor(x)返回的是x的整数部分。如:
floor(2.5)
=
2
floor(-2.5)
=
-3
4、使用ceil函数。ceil(x)返回的是不大于x的最小整数。如:
ceil(2.5)
=
2
floor和ceil对于正数没有区别,但是对于负数结果不同。
Ⅱ C语言怎么四舍五入
利用取整。
比如 四舍五入到千分位,可以
(int)(x*1000+0.5)/1000.0
十分位(int)(x*10+0.5)/10.0
其他类似,只改变其中倍数的值即可。
Ⅲ c语言中如何进行四舍五入,求详细解释!!谢谢!
方法一:
#include<stdio.h>
int main()
{
double d1,d2,d3;
d1=-3.1415926;
d2=(int)(d1*10+0.5)*0.1;
printf("d1=%f,保留一位小数的结果为:%.1f ",d1,d2);
d3=(int)(d1*1000+0.5)*0.001;
printf("d1=%f,保留三位小数的结果为:%.3f",d1,d3);
总结四舍五入保留n为小数
(int)(x*10的n次方+0.5)*10的负n次方;
其次这个方法对负数无效;如果非要用可以先取正数部分算,最后加上负号
}
方法二:
使用round()函数。
#include"stdio.h"
#include"math.h"
void main()
{
float x;
scanf("%f",&x);
int y = round(x);
printf("%d",y);
}
(3)c语言四舍五入取整扩展阅读:
C语言编写注意事项:
1、%运算符不能应用与float或double类型。
2、char类型转换为int型时, 无法判断它是signed还是unsigned.这样其结果有可能为负数, 因此转换时尽量指定signed和unsigned限制符。
3、++i与i++不同之处: ++i是先+1在使用, i++是先使用i在递加1。
4、三元运算符"?:" 第一个表达式的括号不是必须的,但是由于三元表达式的优先级非常低,我们还是将第一个表达式用()括起便于阅读和理解。
5、C语言中可以使用递归 (即函数调用自身函数), 其不节省储存器开销也不加快执行速度, 只是使程序紧凑便于理解。