首页 > 编程知识 正文

c语言向上取整实现,c语言浮点数向上取整

时间:2023-05-03 14:00:19 阅读:155273 作者:3805

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.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。