C语言取整是4舍5入?还是截断取整
floor函数与转换类型为int都是截断取整(向下取整)
ceil函数是向上取整。
四舍五入的话可以写成floor(x+0.5)
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语言中,5/2结果为2,取整不用四舍五入吗
c语言的取整是截断小数部分,不会四舍五入运算
你如果需要四舍五入,可以:int a; float b; b=5/2; a=b+0.5;
C语言中对于浮点数进行(int)转换时,计算机是按照四舍五入呢?还是只取整数部分?
是只取整数部分的。
也就是,可能是1.999999999
然后转换为int就是1,所以
浮点数向int转换,会丢失精度。
为了避免这个,建议如果想取到整数部分。
可以使用
float b;
int a;
a=(b+0.5);
这样写的话,就是四舍五入。
如果
写成
a=b.
可能有
0.99999999999
被截断,
a就是0的情况。