c 程式int型直接轉換成float型可以這樣轉嗎

時間 2021-08-30 10:36:00

1樓:

直接用(int)後接需要轉換的變數,但是需要強調,轉換方式為去掉二進位制數小數點後部分的數字!

具體如下:

說明:圖中數字都是以二進位制方式儲存的,所以x=1011.0011 0011 0011 0011......b

強制轉換後,去掉小數點後部分數字,所以y=11d;

所以x-y=0.0011 0011 0011 0011.......b =0.1999999......d

所以100(x-y)=19.99999.......d強制轉換後只去掉小數點後部分的數字,所以z=19.

2樓:匿名使用者

注意拼寫- -

lz給出的**並不是直接的轉換,而是float的建構函式形式的初始化。當然,中間經過了轉換,和以下的顯式型別轉換作用相同,都可以達到lz的目的。

典型的c風格轉換為:

float c = (float)a /(float)b;;

典型的c++風格轉換為:

float c = static_cast(a) / static_cast(b);;

前者和c語言相容(注意lz的版本不相容);後者雖然羅嗦,不過清楚,容易通過查詢關鍵字找到轉換處。

當然,由於內建的除法(built-in operator/)對於只要有浮點數參加的運算,會把所有的運算元都轉化為浮點數,所以這樣就可以了:

float c = (float)a / b;;

float c = static_cast(a) / b;。

----

另外 wolinxuebin 錯誤。c是float型別,不表示後面的operator/就是浮點除法,兩者無關。

而且, c = (a * 1.0) / (b * 1.0) 不保險,雖然很少有編譯器會死腦筋到不把*1.

0優化掉,但是萬一沒有優化,效率會大大降低(尤其是對於沒有fpu的機器)。就算這樣使用,直接 c = a * 1.0 / b 就可以了。

====

[原創回答團]

如何將int轉為float並用於浮點計算

3樓:匿名使用者

int -> float 不需要強制轉bai換。duinteger -> float :

integer temp = new integer(100);

float temp1 = new float(temp.floatvalue());

rinehart的答案中有乙個小小

zhi的疏忽,

daofloat是基本型別,版不能賦權給float物件。

4樓:金色潛鳥

這與bai你用的語言有關。

c/c++ 可用 強制du轉換zhi

。例如:

int x=3,y=4;

float z;

z = (float) x / (float) y; // 得 0.75

(若 z=x/y; 則做dao整型除法, 得 0)------

常數 3 是回 int 型,答寫成 3.0f 就是 float 型,寫成 3.0 就是 double 型。

定義的時候是int,要怎麼轉換成float?

5樓:匿名使用者

int a;

有兩種辦法,

自己手動強** float b = (float)a自動強轉,基本上所有語言都是會在混合運算時自動強轉為統一資料型別,統一為最高精度的,所以 a*1.0 或 a/1.

0就可以了:

float b = a*1.0

6樓:匿名使用者

整型/浮點型=浮點型

a=a/1.0

c++中字元型和int型,float,double之間的轉換? 5

7樓:仙人掌的憂傷

c++中資料來型別的轉換

一般源分為隱含轉換和強制轉換兩種bai。

隱含轉換:du算術運算zhi符 關係運算子 邏輯dao運算子賦值運算子等二元運算子要求兩個運算子的型別一致,算術運算關係運算中參與運算的型別不一致時要進行隱含轉換。

支援繼承和重用:在c++現有類的基礎上可以宣告新型別,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程式結構,明確類間關係,並且充分利用已有的類來完成更複雜、深入的開發。

新定義的類為子類,成為派生類。它可以從父類那裡繼承所有非私有的屬性和方法,作為自己的成員。

8樓:匿名使用者

c++中資料型別的轉換一般分為隱含轉換和強制轉換兩種;

(1)隱含轉換

算術運算子 關係運內算符 邏輯運算子賦容值運算子等二元運算子要求兩個運算子的型別一致,算術運算 關係運算中參與運算的型別不一致時要進行隱含轉換,原則是將低型別轉化成高型別(型別越高資料精度越高,double>float>unsigned long>long >int>short>char>)這種轉化是電腦自動完成,是安全的,資料精度沒有損失;

注意:邏輯運算子要求草錯書讀是bool型,如不是則系統中地轉換成bool型,非0資料轉換成true,0轉化成false;

(2)強制轉換

一般涉及到將高型別轉化成低型別時使用,不安全,可能在精度的損失,有兩種方法

1型別說明符(表示式)//c++強制轉化符號2(型別說明符)表示式 //c強制轉化符號;

如 float z=7.56;

int a;

a=int(z);或a=(int)z;

9樓:匿名使用者

直接強制轉換不可以嗎?

10樓:孤松獨海

高精度float double會自動轉換,不過也可以(int) 這樣強制轉換,只能高精度向低精度轉換,反之不可以,三者高低排列為double>float>int

11樓:絲煙抹茶

int是整型,float可以小數,double是好像範圍更大,記不清了

mysql中int型的數字怎麼轉換成字串

塔罵德 mysql 數字型別轉換函式 concat cast 1 將int 轉為varchar經常用 concat函式,比如concat 8,0 得到字串 80 2 將varchar 轉為int 用 cast a as signed a為varchar型別的字串。總結 型別轉換和sql server...

he檔案轉換成c語言,hex檔案轉換成C語言

吉祥二進位制 檔案有兩種,一種是文字檔案,一種是程式二進位制檔案,不管哪種檔案都可以用十六進位制編碼來顯示,稱為hex檔案。1 文字hex檔案一般不需要轉成c語言,更多的是程式二進位制檔案,用十六進位制顯示,可以轉換成c語言,一般使用相應的反彙編程式來實現,這方面的工具很多,不同的平臺略有不同。wi...

C 中,如何講CHAR陣列轉換成FLOAT型資料

可使用庫函式strtod const char ptr,char endptr 或atof const char ptr 將char陣列轉換成float型資料。當strtod的第二個引數endptr不為null時,且ptr中含非法字元,則會將非法字元通過endptr返回。include includ...