C語言關於int變成float,C語言中如何實現將一個浮點數float轉成int型別?

2021-03-11 00:02:06 字數 1095 閱讀 7839

1樓:匿名使用者

定義的資料型別不一樣!int和float的資料寬度都不一樣!要麼就強制轉換!但是強制轉換也會出錯!因為int不能強制轉換成float!float的位寬比int長

2樓:密碼資料結構

程式裡你定義a是整型,輸出的卻是浮點型,相矛盾

3樓:匿名使用者

我藉助csdn上一文章告訴

你:printf不會關心你輸入的引數的型別,你輸入的實際是

printf("%f",a),但是版這個整型a不會被隱式型別轉權換為浮點型,而是被直接按記憶體內容當作浮點型

,例如重點是:整型3在記憶體佈局上如果看成浮點數,它就是接近於0的,具體演算法根據ieee 754標準對64位浮點數採用的表示為:

數符(1位)|階碼(11位) | 尾數(52位)

這個3就是6個0 +11,為什麼顯示0 知道為什麼了吧?數太小了!在僅僅可以顯示小數點6…

接近正確,整數3其實對應的是6個0+11+24個0+32位隨機值

記憶體中整數3就是0000001100000000 00000000 00000000

,所以,以後記得 printf("%f",(float)a); 就可以了,問題的錯誤原因瞭解一下即可。

c語言中如何實現將一個浮點數float轉成int型別?

4樓:紛舞年華

強制型別轉換

比如:float a = 10.5;

int b = (int)a;

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

c語言,float型資料轉換成signed int型。

5樓:隱墨出琛瑞

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

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

c語言。這裡int和float有什麼區別

int是整型,即整數,沒有小數點,float是浮點型,即小數 int的變數是整數,float變數帶小數,那題中如果m始終是整數的話就能用int代替 sqrt的形參和返回值是float型別 所以用 f sqrt c 比如若c是int型 c 5 則c sqrt c 2float c 5 c squr c...

c語言中float與int用法有什麼區別

樓主問復的是用法的區別.int 是精製確的整數,因此相關的數學常識都可以在int上得到實現 float 是不精確的浮點數,因此很多要求精確的數學常識在float上不成立.舉例 假設 a b c 都是 int 那麼 a b c 和 c b a 的結果永遠是相等的 哪怕溢位了也相等 而如果 a b c ...

c語言中float型轉換成int型是什麼規則

1 c語言整型使用原碼 反碼 補碼進行編碼,而浮點型使用ieee754進行編碼,所以強制轉換基本上是沒有任何意思的,因為編碼格式不一樣。2 正確的作法是使用c語言標準庫中的floor和ceil函式來進行向下或者向上取整。比如 include include int main 結果 up 2 down...