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的情况。