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时,
左:=(MKr )/M==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)/m
命题得到证实。
有了这个公式,就可以在代码中这样计算:
intnn=(n-1 )/M 1
同调
因为//被团在下面。
使用方法:
? 134567 # includedoubleceil (doublex ); 双流(doublex; 双行(双行; ceil(x )返回大于或等于x的最小整数值。 然后转换为双精度类型。
floor(x )返回小于或等于x的最大整数值。
round(x )返回x的四舍五入整数值。
举个例子,test.c :
? 1345679101112131516161819 # include # include int main (int argc,const char * argv [ ] ) (float num=1.4999; printf(ceil ) %f ) is%f(n )、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.outceil(1.4999900 ) is2.000000floor ) 1.49900 ) is 1.000000round ) 1.499900 ) is 1.