c語言整型數賦值給浮點型的問題,c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

2021-04-20 14:02:40 字數 4478 閱讀 6366

1樓:匿名使用者

b=a/2;是這麼計算的:a是整型變數,2也是,因此計算被當成整型計算,得到整型結果0,然後發內現b是float型的,再將整容型結果0進行資料型別轉換賦值給b。因此應當將a/2算式中分子或分母轉換成float型就能正確計算了,比如:

b=(float)a/2;或b=a/2.0;或b=a; b/=2;

c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

2樓:幻翼高達

c語言中將乙個浮點型賦值給整型時,不會四捨五入,會直接捨去小數部分的資料,也可以認為是執行了下取整運算。

將浮點數(單雙精度)轉換為整數時,將捨棄浮點數的小數部分, 只保留整數部分。將整型值賦給浮點型變數,數值不變,只將形式改為浮點形式, 即小數點後帶若干個0。注意:

賦值時的型別轉換實際上是強制的。

例如執行賦值後,無論5.4還是5.6都會變成5。

3樓:_夢幻陽光

不會的,不過可以寫乙個函式自己轉換啊

#include

int fun(float x)

int main()

列印的為3和4,c語言很靈活的,樓主想要什麼幾乎都能實現

4樓:匿名使用者

不會的,如int x; 如果有 x=4.78; 則x的值是4

5樓:匿名使用者

不會,後面的小數就直接沒了,只有整數部分了

採納我哦

6樓:匿名使用者

不會的啦,整型的話,1/2=0,而不是0.5或者1,但整型變成浮點型要強制型別轉換,不知這麼解釋明白不。?

7樓:龍__鳳

不會的,看程式的執行結果:

8樓:路過

你好,不會的。浮點型資料賦給整型時,浮點型就會被自動轉換成整型,整型只是整數部分。

希望能夠幫到你。

9樓:匿名使用者

不會,一般是給你強轉成整形了,小數字就沒了,四捨五入是不存在的

10樓:匿名使用者

不會,只會把整數部分賦給整型變數

11樓:匿名使用者

不會,比如float a=4.45 那麼 printf("%d",a);輸入為4,直接把小數點後面的數刪去,不是四捨五入

c語言中,將整型資料給浮點數變數賦值會出現什麼結果?

12樓:宿雨厭厭

如果沒bai

超出浮點數取值du範圍zhi,就正常

賦值dao

float num = 4; //合法

你可以試著執行專

下面的屬程式

float num1,num2;

num1 = sizeof(int);

num2 = sizeof(float);

printf("%f\n",num1);

printf("%f\n",num2);

13樓:

沒啥特別的結果,會自動資料型別轉換,還會報乙個warning

c語言的浮點型怎麼轉換為整型?

14樓:幻翼高達

c語言中,浮點型轉換為整型可以用:強制型別轉換、自動型別轉換,例如:(int)3.14、int a = 3.14。

1、強制型別轉換

強制型別轉換是通過型別轉換運算來實現的。其一般形式為:(型別說明符)(表示式),其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。

例如: (double) a 把a轉換為雙精度浮點型,(int)(x+y) 把x+y的結果轉換為整型。

2、自動型別轉換

(1)執行算術運算時,低型別(短位元組)可以轉換為高型別(長位元組);例如: int型轉換成double型,char型轉換成int型等。

(2)賦值表示式中,等號右邊表示式的值的型別自動隱式地轉換為左邊變數的型別,並賦值給它。

(3)函式呼叫時,將實參的值傳遞給形參,系統首先會自動隱式地把實參的值的型別轉換為形參的型別,然後再賦值給形參。

(4)函式有返回值時,系統首先會自動隱式地將返回表示式的值的型別轉換為函式的返回型別,然後再賦值給呼叫函式返回。

15樓:程式猿3號

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

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

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

這種方法採用的是捨去小數部分,能用於你的問題。

2、c/c++中的整數除法運算子「/」本身就有取整功能(int / int),而下面介紹的取整函式返回值是double。整數除法對正數的取整是捨去小數部分,能用於你的問題。不過整數除法對負數的取整結果和使用的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。floor函式能用於你的問題。

5、int b = (int)a;//取整int c = (int)(a+0.5);//四捨五入

16樓:步成文赤豪

c語言中沒有四捨五入,將浮點型轉換成整形時,只保留小數點前面的數值

17樓:匿名使用者

float ftemp;

不要後面的=0;因為一旦你分配給ftemp了值,它是無法通過鍵盤寫入的方式

賦給的,因為空間已經被占用。這不是a=b+c這樣表示式的賦值。

暈,難道要我把源**給你你直接複製?

那就給你吧!

#include

void main()

隨便輸入乙個數,然後回車,看結果

18樓:匿名使用者

可通過強制型別轉換或賦值過程中自動轉換。

強制型別轉換。c語言提供強制型別轉換符,其可表示為(型別),該操作符具有從右向左的結合型,用法示例為「(型別)變數」,則對應變數被轉換為括號中 的型別,因此想把浮點型轉換為整型時,括號中使用int即可:

如果直接把浮點型變數賦值給整型,其會自動轉換為整型:

但是注意當float型變數轉換為整型時,小數部分被捨棄,但不會遵循四捨五入的原則,如果浮點型別的值過大,超過整型所能容納的範圍,則結果是不確定的。

c語言浮點型轉換為整型怎麼轉換的?

19樓:匿名使用者

第一種是bai利用系統預設的轉換,du即將小數部分zhi截去dao,僅保留整數部分回,如3.6轉換答為3,-5.68轉換為5。

第二種是強制型別轉換,效果與第一種相同,如(int)(-6.666)為-6。

如有其他特殊要求,則需要程式設計解決。

20樓:匿名使用者

c語言中沒有四捨五入,將浮點型轉換成整形時,只保留小數點前面的數值

21樓:匿名使用者

float ftemp;

不要後面bai

的=0;因為一旦你分配du給ftemp了值,它zhi是無法通過dao鍵盤寫入的方式賦給

回的,因為空答間已經被占用。這不是a=b+c這樣表示式的賦值。

暈,難道要我把源**給你你直接複製?

那就給你吧!

#include

void main()

隨便輸入乙個數,然後回車,看結果

22樓:程式猿3號

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

1、直接制賦值給整bai

數變數。如:

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

這種du方法採用的zhi是捨去小數部分,能dao用於你的問題。

2、c/c++中的整數除法運算子「/」本身就有取整功能(int / int),而下面介紹的取整函式返回值是double。整數除法對正數的取整是捨去小數部分,能用於你的問題。不過整數除法對負數的取整結果和使用的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。floor函式能用於你的問題。

5、int b = (int)a;//取整int c = (int)(a+0.5);//四捨五入

C語言中給浮點數賦值問題c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

float d 0.5 這叫宣告和初始化。願意寫 float d 0.5f 也可以。常數 0.5 預設 處理成 double 型。0.5f 規定 它 是 float 型.其實這不是什麼大問題。相對c語言中別的問題,這個可以完全忽略。float d 這叫宣告。d 0.5 這叫賦值語句。如果你前面有過 ...

c語言的賦值問題,C語言指標的賦值問題

上面的說法中,都存在錯誤或不足.1.首先 c a b 的意義是把 a 和 b 這兩個變數的內容 5 和 6 相加得 11,再把 11 這個結果值傳送至 變數 c 所在的儲存單元儲存起來 而不是你想像的 將 a 和 b 這兩個變數組合為一個變數作為 c,或者複製一份變數組合再作為 c.當你用int a...

c語言中給float型變數賦值時需要在數值後加f嗎

不加是double型別,double可以隱式轉換成float,所以可以不加,但是編譯器可能給你乙個警告。float型別的字面常量,後面需要加上f或者f來表示是乙個單精度浮點數。只所以專要這樣寫,是屬因為預設的浮點數常量都是double型別。include int main c語言中對變數賦值0x是什...