C語言中如何實現將浮點數float轉成int型別

2021-03-04 00:12:42 字數 5988 閱讀 9149

1樓:紛舞年華

強制型別轉換

比如:float a = 10.5;

int b = (int)a;

這樣 就轉換了,但是不推薦高精度轉低精度 會丟失精度的就像這個,a是10.5 轉換後變成10了小了太多

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樓:幻翼高達

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)函式有返回值時,系統首先會自動隱式地將返回表示式的值的型別轉換為函式的返回型別,然後再賦值給呼叫函式返回。

13樓:程式猿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);//四捨五入

14樓:步成文赤豪

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

15樓:匿名使用者

float ftemp;

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

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

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

那就給你吧!

#include

void main()

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

16樓:匿名使用者

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

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

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

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

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

17樓:匿名使用者

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

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

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

18樓:匿名使用者

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

19樓:匿名使用者

float ftemp;

不要後面bai

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

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

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

那就給你吧!

#include

void main()

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

20樓:程式猿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語言,float型資料轉換成signed int型。

21樓:隱墨出琛瑞

一個啊a[6],一個b[6]。是不是寫錯了。

c語言中,float型資料轉換成signedint型的時候只保留整數部分版,小數部分全權部舍掉。還有就說你的陣列裡邊定義了6個數,但是呼叫的話是從a[0]--a[5].這樣你再取a[6]的話肯定是0.

c語言中float型資料怎麼 取整數部分演算法 或取小數部分

22樓:蟲心菜

分析如下:來

一種簡單的辦源

法是直接強制轉換到int型就是整數部分。減去這個int型就是小數部分了。

**如下:

float n=12.223;

int x=(int)n;

float y=n-(float)x;

得出的x為資料的整數部分,y為資料的小數部分。

拓展資料:

浮點型資料型別,float 資料型別用於儲存單精度浮點數或雙精度浮點數。浮點數使用 ieee(電氣和電子工程師協會)格式。浮點型別的單精度值具有 4 個位元組,包括一個符號位、一個 8 位 excess-127 二進位制指數和一個 23 位尾數。

尾數表示一個介於 1.0 和 2.0 之間的數。

由於尾數的高順序位始終為 1,因此它不是以數字形式儲存的。此表示形式為 float 型別提供了一個大約在-3.4e+38 和 3.

4e+38 之間的範圍。

23樓:捐你妹

一種簡單的辦法是直接強制轉換到int型就是整數部分。

減去這個int型就是小數部分了。

24樓:

float x=1234.567,z;

long int y;

取整數部分: y = (int) x;

取小數部分: z = x - y;

25樓:匿名使用者

float n=12.223;

int x=(int)n;

float y=n-(float)x;

26樓:匿名使用者

小數取整

#include

void main()

c語言怎麼表示單精度浮點數

27樓:文化廚子

bai在c語言原始碼中,只能在浮點數後du面加f來表示單精度zhi浮點數。dao譬如如下**:版

float f = 1.1f;

或者float f = 1.1f;

大小寫權都可以的。

16進位制的浮點數編碼,它不像整數編碼那樣直觀,因為浮點數編碼,在計算機中是以ieee754格式進行編碼編碼的,每一個二進位制位都有不同的意思,拿單精度浮點數來說,它的符號位佔1位,指數位佔8位,有效數字位佔23位,而且,如果使用十六進位制來傳送,你還要確定計算機的記憶體,儲存順序。 相對很複雜的。

28樓:千鋒教育

在c語言原始碼中,只能在浮點數後面加f來表示單精度

浮點數。例如:版float f=1.0f

單精度浮點數(single)

用權來表示帶有小數部分的實數,一般用於科學計算。

佔用4個位元組(32位)儲存空間,包括符號位1位,階碼8位,尾數23位。其數值範圍為-3.4e38~3.

4e38,單精度浮點數最多有7位十進位制有效數字,單精度浮點數的指數用"e"或"e"表示。

單精度浮點數有多種表示形式:±n.n(小數形式) ±n e ±m(指數形式) ±n.n e ±m (指數形式)

如果某個數的有效數字位數超過7位,當把它定義為單精度變數時,超出的部分會自動四捨五入。

雙精度浮點數(double)

用8個位元組(64位)儲存空間,包括符號位1位,階碼11位,尾數52位。

c語言程式設計實現將44階矩陣轉置,C語言程式設計實現,將4 4階矩陣轉置

轉置前 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 轉置後 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 include define n 4 void transpose int a n void show int a n int ...

c語言中如何定義陣列C語言中如何定義陣列

c語言中,同變數一樣 陣列也必須先定義後使用。一維陣列的定義形式 型別識別符號 陣列名 常量表示式 例如int a 10 其中a為地址常量。如變數的定義一樣,int a double a float a等 陣列的定義只是把後面的變數名改為陣列名而已。int a 10 就是定義了一個陣列名為a的陣列 ...

c語言中》和《如何使用C語言中和如何使用?

c語言中 代表左移運算子,代表右移運算子,位移位運算子是將資料看成二進位制數,對其進行向左或向右移動若干位的運算。代表左移運算子 左移運算子用來將一個數的各二進位制位全部左移若干位,移動的位數由右運算元指定,右運算元必須是非負值,其右邊空出的位用0填補,高位左移溢位則捨棄該高位。例如 設無符號短整型...