C語言取整方法

2021-08-21 18:23:51 字數 1219 閱讀 9587

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

這樣的方法採用的是捨去小數部分。

『 / 』本身就有取整功能(int / int),可是整數除法對負數的取整結果和使用的c編譯器有關。

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

如:floor(3.5) = 3

floor(-3.5) = -4

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型。

在網上發現乙個簡單的向上取整方法。

這裡我們用<>表示向上取整,表示向下取整,我們能夠證明:

= [(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

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

c語言取整方法

實驗環境 vc6.0 1 使用int強制轉換 使用int強制轉換的結果就是去掉小數部分。int a a int 1.2 a 1 a int 1.2 a 1 2 使用floor函式向下取整 使用floor函式的結果是向下取整,即得到比該數小的最大整數,需要包含標頭檔案math.h in a a flo...

C語言取整方法

3.使用floor函式 4.使用ceil函式 5.使用round函式 作用 使用該方法是將小數部分去除。int i 3.5 或i int 3.5 作用 使用整數除法運算也是將小數部分除去。int int 根據c語言的特性,是去除小數部分的 四捨五入裡的四捨是 1 2 3 4,五入是 5 6 7 8 ...

C語言取整方法總結

int i 3.5 或 i int 3.5 這種方法採用的是捨去小數部分。本身就有取整功能 int int 但是整數除法對負數的取整結果和使用的c編譯器有關。floor x 返回的是小於或等於x的最大整數。如 floor 3.5 3 floor 3.5 4 ceil x 返回的是大於x的最小整數。如...