C语言有以下几种整形方法。
1、直接代入整数变量。 例如:
int i=2.5; 或i=(int ) 2.5;
该方法采用舍去小数部分
2、C/C中的整数除运算符“/”本身具有整数化功能(int/int ),但通过整数除获得的负数的整数化结果与要使用的c编译器相关。 3、使用floor函数。 foor(x )返回小于或等于x的最大整数。 例如:
floor(2.5 ) )。
=2
floor(-2.5 )=
-34、使用ceil函数。 Cil(x )返回大于x的最小整数。 例如:
Ceil(2.5 ) )。
=3
Ceil(-2.5 )=-2floor )舍入到负无穷大,floor(-2.5 )=
-3; ceil ) )向上舍入为正无穷大,ceil(-2.5 )=-2。
5、round(x )返回x的四舍五入整数值。
但是,在c中,round、ceil和floor ()函数返回双精度类型。
首先在网上找到了简单的上传方法;
这里表示上面取整数,[]表示下面取整数。 那么,如何表示这个值呢?
我们能证明的是:
=[(n-1 )/m ) ]1) 0
一般来说,n=mkr (假设0=r
1 ) r0时,
左:===k=k 1
右((n-1 )/m )1=) MKr-1 )/m )1=(k ) r-1 )/m )1=k1 ) (r-1 )/m )=k1
2 ) r=0时
左:=k
右((n-1 )/m )1=(MK-1 )/m )1=(m ) k-1 ) M-1 )/m (m )1=) ) k-1(M-1 )/m )1)
命题得到证实。
有了这个公式,就可以在代码中这样计算:
intnn=(n-1 )/M 1
.
因为//被团在下面。
使用方法:
1
2
3
4
5
6
7
#包含
双电池(doublex );
双流(doublex;
双行(双行;
ceil(x )返回大于或等于x的最小整数值。 然后转换为双精度类型。
floor(x )返回小于或等于x的最大整数值。
round(x )返回x的四舍五入整数值。
举个例子,test.c :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#包含
#包含
输入
主(int
argc,const
char
*argv[] )
{
浮动
num=1.4999;
printf(ceil ) %f ) is
%fn ',num,Ceil(num );
printf('floor ) %f ) is
%fn ',num,floor(num );
printf(round ) %f ) is
%fn ',num,round(num );
返回
0;
() ) ) ) )。
编译: $cc test.c -lm
执行: $./a.out
Ceil(1.499900 ) is 2.000000
floor(1.499900 ) is 1.000000
round(1.499900 ) is 1.000000