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

.

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

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值