C语言中取整的规则是什么?

Python012

C语言中取整的规则是什么?,第1张

在 C 语言中,取整的规则取决于使用的取整函数

如果使用内置的取整函数 floor(),则取整的规则为向下取整,即取最大的整数,小于等于原数。例如:

floor(3.14)  # 输出 3

floor(-3.14)  # 输出 -4

如果使用内置的取整函数 ceil(),则取整的规则为向上取整,即取最小的整数,大于等于原数。例如:

ceil(3.14)  # 输出 4

ceil(-3.14)  # 输出 -3

如果使用内置的取整函数 round(),则取整的规则为四舍五入,即取最接近原数的整数。例如:

round(3.14)  # 输出 3

round(3.5)  # 输出 4

round(-3.14)  # 输出 -3

round(-3.5)  # 输出 -4

注意:floor() 和 ceil() 函数需要使用 math.h 头文件。

#include <math.h>

另外,还可以使用类型转换运算符(即 (int) 运算符)将浮点数强制转换成整型,实现取整的效果。例如:

(int)3.14  # 输出 3

(int)-3.14  # 输出 -3

但是这种方法不会准确地处理负数

(int)-3.5  # 输出 -3(不是正确的答案)

向下

例如:

int a = 5,b = 2

int c = a/b

printf("%d",c)//2.5向下取整 输出2

1.

向上取整问题:如果整除

X/M=N,则

X=N*M

+

d,其中余数

d

的范围是

[0,M-1]考虑数字

Y

=

X+(M-1)

=

(N*M+d)

+

(M-1)

=

(N+1)*M

+

(d-1),很容易发现,当

d>1

时,整除

Y/M=N+1,就是说在

X+(M-1)

实现了向上取整;当d=0时,整除Y/M=N,结果是准确的值。2.

数据类型转换问题:数字后面添加

.f 表示这是一个浮点数,浮点数的运算符

/ 是普通的除法,不是整除,得到的结果仍然是浮点数,转换成整数的时候直接把小数点后面的舍去了,不能实现向上取整。3.

向下取整不能说是C的缺陷。否则,反过来,难道默认向上取整就不是缺陷?