c語言中我知道有向零取整的floor,有沒有四捨五入取整的?若有,是啥

2021-03-27 09:19:23 字數 6066 閱讀 7115

1樓:匿名使用者

有,應該是round,如果我沒記錯的話,不用十多年了

2樓:匿名使用者

使用round(x, 0),第二個引數0就表示小數位為0,也即取整

c語言向零取整原則的含義,具體一點.

3樓:林連超

舉例子吧,-3除以2結果本來應該是-1.5,但是向0取整後結果就是-1(不是-2,因為-1更靠近0)。如果是3除以版2向0取整的話結果就權是1。

也就是原始的算出來的數以靠近0的原則進行取捨。不用遵循四捨五入。

4樓:sunny鞦韆墜

就是遇到強制型別轉換的時候,比如浮點型轉換為整形的時候,系統會把資料的小數點以後的資料全部丟掉,所以就是向0靠近,正數丟了變小,複數丟了變大啊,看起來不是向0麼

5樓:匿名使用者

正數,去尾;負數,也去尾。

採用取整函式[x],x>0時。[x]+1,x<0時

6樓:匿名使用者

說得不夠具體。

bai如果是兩個整

du數相除,那麼結果zhi就是商,餘數捨去。dao如果是內一個小數取整,則在math.h標頭檔案容裡,有2個取整函式:

ceil:上取整,就是取比小數大的最小整數,也就是小數之上的第一小整數。

floor:下取整,就是取比小數小的最大整數,就是小數之下的第一大整數

c語言哪些時候向零取整哪些時候四捨五入? 15

7樓:志當存高遠

利用取整運算的截斷特點實現。

比如:int a=0.75;取整後賦值給a的是0,小數點後面的被截斷了。

如果要做整數的四捨五入,那麼可以:a=(int)(0.75+0.5);取整後得到的與數學中四捨五入的結果一致,都是1;

如果要進行小數點後面的四捨五入,可以這樣計算:

要保留小數點後面兩位的小數,即在小數點後面兩位上做四捨五入,0.756

float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100;

運算是這樣的:先將0.756乘以100,得到75.

6,然後利用取值運算的截斷做四捨五入,75.6+0.5=76.

1取整後等於76,再除以100,得到結果:0.76

c語言中有沒有進行四捨五入的函式

8樓:韌勁

首先,這個問題的解決方案取決於我們所需要的轉換方式:是截斷轉換還是舍入轉換;另一方面,它基本與我們需要轉換的浮點數型別無關──無論是 float 還是 double,甚至是 long double。

有時人們覺得一個浮點變數的值和一個整型變數的值可以完全一樣地可表示,你可能相信 x 值為 100.0 時我們只要把它轉換為整型就會得到整數 100。但在任何時候,你都不應依賴於期望一個浮點數的值能夠與一個整型數的值完全相等,你真正所需要的可能是四捨五入。

截斷轉換的意思是拋棄所有的小數部分,例如 3.9 將被轉換為 3,這種轉換是 c 語言中將浮點數轉換為整型數的預設方式,也就是說無論在什麼時候,只要將浮點數轉換為整型數,採用的都是這種方式。關於這種轉換何時發生,有一些特殊的規定,這裡我們僅指出賦值時所發生的轉換,比如

i = x;

其中 i 是一個整型數,x 是一個浮點數。當然,在顯式型別轉換的情況下,這樣的轉換也會發生,比如

(int) x

舍入轉換是指獲取與給定浮點數最為接近的整型數,因此 3.9 應被轉換為 4,這才是人們提出我們正在解決的這個問題時所真正需要的。對於舍入轉換,我們沒有直接的工具(比如運算子或者庫函式),嚴格地說,舍入轉換並非與 c 標準裡所定義的轉換在同一意義下的轉換。

對於正的浮點數,最簡單的四捨五入方法就是用這樣的一個表示式

(long) (x+0.5)

但是如果表示式對負數有效的話會更好,即使在你看來負數的情況不會發生。這意味著你可以用一個條件表示式:

x >= 0 ? (long)(x+0.5) : (long)(x-0.5)

這個表示式的返回值就是與浮點變數 x 的值最接近的整數值。

如果需要大量地使用舍入轉換,則可以寫這樣的一個巨集:

#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))

這可以在某種程度上使**更具可讀性。

注意到這樣的轉換會將 1.5 變為 2 但卻將 -1.5 變為 -2,那麼對於這樣正好處於兩個整數之間的浮點數,你可能需要做一些其它的處理,但這在實際當中並不十分重要。

需要小心的是,將一個浮點數轉換為一個整型數可能導致上溢,但大多數的實現都沒有進行相關的判斷。用 long 替代 int 會給出一個更寬的範圍(建議使用 long),但仍然比浮點數的範圍要小得多。

如果效率不是至關重要的話,則可以定義這樣的一個函式(而不是簡單地寫一個 #define),使你的程式更具魯棒性:

long round(double x)

如果在意效率的話,可以寫這樣一個巨集

#define round(x) ((x) < long_min-0.5 || (x) > long_max+0.5 ?\

error() : ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))

這要求在程式中有 #include ,並且有一個處理錯誤的函式 error,其返回值為 long 型別。

9樓:朱巨集建

四捨五入演算法:如果要求精確到小數點後面的第n位,則需要對第n+1位進行運算。方法是將該小數乘以10的n+1次方後加5,然後除以10並強制轉換變數型別為長整型,再將該數除以10的n次方,同時強制轉換型別為浮點型。

**實現如下:

long t; /*定義長整型變數t*/t=(h*10n+1+5)/10; /*對h進行操作,得到值浮點型,t取值時取整數部分。10n+1為要擴大的倍數*/

h=(float)t/10n;  /*將t縮小10n倍,並轉換成浮點型*/

10樓:

標c沒有相應函式,但可以間接實現

a=(int)(2.5);//a=floor(2.5)

a=(int)(2.5+0.5);//a=ceil(2.5) 加0.5相當於四捨五入

11樓:匿名使用者

沒見過,不過你可以自己用小技巧:比如要保留2位小數的float a 第三位四捨五入

則可以這樣 a = (int)(a*100 + 0.5)/100

12樓:匿名使用者

round(x)

引數時double型,返回小數對整數部分的四捨五入值

比如 round(3.623); 返回4

c語言中什麼運算只取整數部分,什麼時候不但取整,還要四捨五入?? 發現c語言中很多時候不用四捨五入

13樓:夢羽天堂

取整要看型別的自動轉換了,,比如a和b都是整形資料,那麼a/b的結果就一定是整形。結果就取整數部分,如果其中有一個是浮點型,那麼結果就是浮點型,但是不會四捨五入,如果需要四捨五入那麼應該寫成a/b+0.5.

自動轉換的順序是char,short,int,float,double,越往後優先順序越高

14樓:狂

取整的話 還是要看資料型別的 int型別的除法就是取整的

至於四捨五入什麼的 沒有專門的規定 可以自己處理一下即可

15樓:匿名使用者

定義int的時候就取整了

16樓:匿名使用者

c語言裡面都沒有四捨五入。的都是隻取整數部分。

17樓:鬼火狼煙

到底需要四捨五入還是直接取整不是程式說了算了,是根據實際情況說了算的這個要看你需要的結果了

比如說double x=1.3;

printf("%d",int(x)) 取整printf("%d",int(x+0.5)) 四捨五入

c語言有哪些取整函式?

18樓:聽不清啊

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) = -3

4、使用ceil函式。ceil(x)返回的是大於x的最小整數。如:

ceil(2.5) = 3

ceil(-2.5) = -2

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

這兩個函式在vc++中也能使用,但使用時需要包含math.h檔案。要在程式的開始新增如下**:

#include

19樓:匿名使用者

除樓上的回答之外,還有round(x)返回x的四捨五入的整數值

20樓:匿名使用者

常用(int)x對x取整,而int(x)是c++中的用法,或者直接賦給int型變數,但如果是負數會產生誤差

21樓:匿名使用者

ceil和floor

floor(x),有時候也

寫做floor(x),其功能是「下取整」,或者說「向下舍入」,即取不大回於x的最大整

答數(與「四捨五入」不同,下取整是直接去掉小數部分),例如:x=3.14,floor(x)=3 y=9.99999,floor(y)=9

ceil是向上取整,例如:x=3.14,ceil(x)=4

在c語言中,相除後取整的時候,我記得有些需要四捨五入,有些直接取整數部分,分別是哪些情況?

22樓:匿名使用者

round()函式會四捨五入。

簡單的除法運算沒有四捨五入,如果兩個整數相除,那麼商也保留整數部分,而且是直接擷取整數部分,不四捨五入,浮點數相除,會返回準確的商。

23樓:匿名使用者

到底需要四捨五入還是直接取整不是程式說了算了,是根據實際情況說了算的這個要看你需要的結果了

比如說double x;

printf("%d",int(x)) 取整printf("%d",int(x+0.5)) 四捨五入

24樓:華師來的

int i=1;

int j=2;

float k=1;

float s;

s=i/j;//此時s=0.0

s=k/j;//這時s=0.5;

c語言取整函式

25樓:

在foxpro中,取整函式是int,c語言估計也是int,不過這不要緊,能理解我的做法就行內。

假定a=21.38,要想得到 b=0.38 (是容這個意思吧?)我是這樣做的:

b=a-int(a)

也即:b=21.38-21=0.38

可以了嗎?

26樓:匿名使用者

在foxpro中,bai

du取整函式是int,c語言估計也是int,不過zhi這不要緊,能理解我dao的做法就行。

假定內a=21.38,要想得到 b=0.38 (是容這個意思吧?)我是這樣做的:

b=a-int(a)。

27樓:郭長達

floor(x) 下取整

ceil(x) 上取整

都是math.h中的函式

28樓:匿名使用者

例如:double a = 12.34;

1.取整數部分:int x = (int)a;//x = 12

2.取小數部分:double y = a - (double)x;//y = 0.34

C 裡面,取整的函式是什麼,在 C語言中 取整 , 求餘的符號各是什麼?

1 首先,定義一個實型變數n,儲存取整的數值。2 用ceil函式對實數5.78取整,取整後的數值儲存在變數n中。3 輸出取整後的數值n。4 執行程式,輸出的值為6,這是因為ceil是對實數向上取整。5 ceil函式是否是四捨五入向上取整呢?接著,將ceil內的數更改為5.18。6 執行程式,看到的結...

在 c語言中取整求餘的符號各是什麼

如果運算元是整數,那麼就是整除,否則就是浮點除,求餘的符號是 1 通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。2 求模運算...

c語言的a和a有什麼區別,C語言中a與a的區別是什麼詳細一點,謝謝

如果要列印的值 來是a 如printf d a 那打源印出來的只是a的值bai.但是第二次打du 印的a值就 zhi是 後的值.就是先打dao印後 a就是先改變a的值,再列印出來.具體差別你可以自己試著執行比較一下.c語言中a 與 a的區別是什麼?詳細一點,謝謝 a 是先返回a的值,再執行 運算。a...