c语言的除法向上还是向下取整,【向上取整/向下取整】C語言向上或向下取整 函數...

C語言有以下幾種取整方法:

1、直接賦值給整數變量。如:

int i = 2.5; 或 i = (int) 2.5;

這種方法采用的是舍去小數部分

2、C/C++中的整數除法運算符“/”本身就有取整功能(int / int),但是整數除法對負數的取整結果和使用的C編譯器有關。3、使用floor函數。floor(x)返回的是小於或等於x的最大整數。如:

floor(2.5) = 2

floor(-2.5) = -34、使用ceil函數。ceil(x)返回的是大於x的最小整數。如:

ceil(2.5) = 3

ceil(-2.5) = -2floor()是向負無窮大舍入,floor(-2.5) = -3;ceil()是向正無窮大舍入,ceil(-2.5) = -2。

但是在C里面ceil和floor()函數是返回double型,

先在網上發現一個簡單的向上取整方法;

這里我們用<>表示向上取整,[]表示向下取整,那么怎么來表示這個值呢?

我們可以證明:

=[(N-1)/M]+1 (0

不失一般性,我們設N=Mk+r(0<=r

1)當r>0時,

左邊:===k+=k+1

右邊:[(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1

2)當r=0

左邊:=k

右邊:[(N-1)/M]+1=[(Mk-1)/M]+1=[(M(k-1)+M-1)/M]+1=[k-1+(M-1)/M]+1=k+[(M-1)/M]=k

命題得證。

有了這個公式,我們在代碼里可以這樣計算:

int nn=(N-1)/M +1

.

因為'/'是往下取整的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值