程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言取整方法總結

C語言取整方法總結

編輯:關於C語言

C語言取整方法總結


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

1. 直接賦值給整數變量

int i = 3.5; 或 i = (int) 3.5;

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

2、整數除法運算符‘ / ’取整

‘ / ’本身就有取整功能(int / int),但是整數除法對負數的取整結果和使用的C編譯器有關。

3、使用floor函數

floor(x)返回的是小於或等於x的最大整數。如:

floor(3.5) = 3

floor(-3.5) = -4

4、使用ceil函數

ceil(x)返回的是大於x的最小整數。如:

ceil(3.5) = 4

ceil(-3.5) = -3

floor()是向負無窮大捨入,floor(-3.5) = -4;

ceil()是向正無窮大捨入,ceil(-3.5) = -3。

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

5.向上取整方法

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

這裡我們用<>表示向上取整,[]表示向下取整,我們可以證明:

= [(N-1)/M]+1 (0 < M <= N M,N∈Z)

不失一般性,我們設N = Mk+r (0 <= r < M,k∈Z),

(1)當r > 0時,

左邊: = <(Mk+r)/M >= = 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

式中' / '是往下取整的。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved