如何在C 中,講float型資料轉換成char資料

時間 2021-10-17 02:37:57

1樓:匿名使用者

//將float轉為4byte資料

void set_float_to_buf(float val,unsigned char *buff)

//將4byte資料轉為float

float get_float_from_buf(unsigned char *buff)

void set_float_to_buf(float val,unsigned char *buff)

float get_float_from_buf(unsigned char *buff)

2樓:夢醒

很簡單,用sprintf即可,看**:

#include

using namespace std;

int main(){

float a;

while(cin>>a){

char s[100];

sprintf(s,"%f",a);

cout<

3樓:匿名使用者

貌似不太可以呢!char型佔一個位元組,float佔4個位元組。如果將超過char範圍的float資料轉換成char型,那麼必然會丟失。

4樓:匿名使用者

char str[40];

float f=10323.323;

sprintf( str, "%f", f);

5樓:匿名使用者

float t;

(char)t;

c++中,如何講char陣列轉換成float型資料。

6樓:匿名使用者

可使用庫函式strtod(const char* ptr, char** endptr)或atof(const char *ptr)將char陣列轉換成float型資料。

當strtod的第二個引數endptr不為null時,且ptr中含非法字元,則會將非法字元通過endptr返回。

#include

#include

int main()

7樓:徐光豬

#include

using namespace std;

int main()

double atof( const char *string );

這個是函式原型

8樓:匿名使用者

strtod

double strtod(char *str,char *endstr)

c++中如何將char型資料轉換成int float double

9樓:匿名使用者

char本來就是個數字,如果就是轉換,直接int i = ch就可以了。

關鍵是看你要做什麼。。還有什麼程式設計環境

10樓:匿名使用者

#include

#include

#include

void main ( )

11樓:

char a = 'c';

int i = a;

cout << i << endl; // 輸出的就是數字;

c語言程式設計float型資料轉化為2進位制數輸出

12樓:投機士

在c++裡,實數(float)是用四個位元組即三十二位二進位制位來儲存的。其中有1位符號位,8位指數位和23位有效數字位。實際上有效數字位是24位,因為第一位有效數字總是「1」,不必儲存。

有效數字位是一個二進位制純小數。8位指數位中第一位是符號位,這符號位和一般的符號位不同,它用「1」代表正,用」0「代表負。整個實數的符號位用「1」代表負,「0」代表正。

在這儲存實數的四個位元組中,將最高地址位元組的最高位編號為31,最低地址位元組的最低位編號為0,則實數各個部分在這32個二進位制位中的分佈是這樣的:31位是實數符號位,30位是指數符號位,29---23是指數位,22---0位是有效數字位。注意第一位有效數字是不出現在記憶體中的,它總是「1」。

將一個實數轉化為c++實數儲存格式的步驟為:

(1)先將這個實數的絕對值化為二進位制格式,注意實數的整數部分和小數部分化為二進位制的方法是不同的。

(2)將這個二進位制格式實數的小數點左移或右移n位,直到小數點移動到第一個有效數字的右邊。

(3)從小數點右邊第一位開始數出二十三位數字放入第22到第0位。

(4)如果實數是正的,則在第31位放入「0」,否則放入「1」。

(5)如果n 是左移得到的,說明指數是正的,第30位放入「1」。如果n是右移得到的或n=0,則第30位放入「0」。

(6)如果n是左移得到的,則將n減去一然後化為二進位制,並在左邊加「0」補足七位,放入第29到第23位。如果n是右移得到的或n=0,則將n化為二進位制後在左邊加「0」補足七位,再各位求反,再放入第29到第23位。

將一個計算機裡儲存的實數格式轉化為通常的十進位制的格式的方法如下:

(1)將第22位到第0位的二進位制數寫出來,在最左邊補一位「1」,得到二十四位有效數字。將小數點點在最左邊那個「1」的右邊。

(2)取出第29到第23位所表示的值n。當30位是「0」時將n各位求反。當30位是「1」時將n增1。

(3)將小數點左移n位(當30位是「0」時)或右移n位(當30位是「1」時),得到一個二進位制表示的實數。

(4)將這個二進位制實數化為十進位制,並根據第31位是「0」還是「1」加上正號或負號即可。

特別地,實數0用c++的float格式表示是00000000000000000000000000000000。

如果還不太明白,這裡舉幾個例子。

一。將23.56化為c++的float格式。

(1)將23.56化為二進位制後大約是「10111.1000111101011100001」。

**** 首先將一個小數如:235.725的小數部分取出,即:

0.725,將其乘以進位制數二進位制就乘以2後得到1。45,取其整數部分1為二進位制小數的第一項(十分位),在將小數部分0。

45乘2得0。9,取其整數部分為二進位制小數的第二位(百分位)0,在將其小數部分0。9乘2,得1。

8,取其整數部分為二進位制小數的第三位(千分位)1,取其小數部分0。8再乘2……以此類推,直到值為0或形成迴圈小數則停止。

(2)將小數點左移四位,得到「1.01111000111101011100001」。

(3)這已經有了二十四位有效數字,將最左邊一位「1」去掉,得到「01111000111101011100001」。將它放入第22到第0位。

(4)因為23.56是正數,因此在第31位放入「0」。

(5)由於我們把小數點左移,因此在第30位放入「1」。

(6)因為我們是把小數點左移4位,因此將4減去1得3,化為二進位制,並補足七位得到0000011,放入第29到第23位。

完畢。如果把最左邊定為第31位,最右邊定為第0位,那麼在c++裡,float格式的23.56是這樣表示的:01000001101111000111101011100001。

相應地-23.56就是這樣表示的:11000001101111000111101011100001。

二。將實數0.2356化為c++的float格式。

(1)將0.2356化為二進位制後大約是0.00111100010100000100100000。

(2)將小數點右移三位得到1.11100010100000100100000。

(3)從小數點右邊數出二十三位有效數字,即11100010100000100100000放入第22到第0位。

(4)由於0.2356是正的,所以在第31位放入「0」。

(5)由於我們把小數點右移了,所以在第30位放入「0」。

(6)因為小數點被右移了3位,所以將3化為二進位制,在左邊補「0」補足七位,得到0000011,各位取反,得到1111100,放入第29到第23位。

完畢。因此0.2356用c++的float格式表示是:00111110011100010100000100100000。其中最左邊一位是第31位,最右邊一位是第0位。

三。將實數1.0化為c++的float格式。

(1)將1.0化為二進位制後是1.00000000000000000000000。

(2)這時不用移動小數點了,這就是我們在轉化方法裡說的n=0的情況。

(3)將小數點右邊的二十三位有效數字00000000000000000000000放入第22到第0位。

(4)因為1.0是正的,所以在第31位裡放入「0」。

(5)因為n=0,所以在第30位裡放入「0」。

(6)因為n=0,所以將0補足七位得到0000000,各位求反得到1111111,放入第29到第23位。

完畢。所以實數1.0用c++的float格式表示是:00111111100000000000000000000000。其中最左邊一位是第31位,最右邊一位是第0位。

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

13樓:仙人掌的憂傷

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

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

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

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

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

14樓:匿名使用者

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;

15樓:匿名使用者

直接強制轉換不可以嗎?

16樓:孤鬆獨海

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

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

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

mysql資料庫如何轉換成sql檔案

一棵無所不知的小白菜 1 首先開啟資料庫介面視窗。2 接著按下匯出嚮導,彈出小窗選擇sql指令碼檔案。3 然後在切換小窗顯示錶中,選擇需要匯出的表。4 接著在彈出的對話方塊中選擇欄位。5 然後在彈出的介面勾選遇到錯誤繼續。6 最後按下開始,執行轉換sql指令碼檔案過程即可。 cmd命令列中 mysq...

如何在js中把字元轉換成json物件

黑馬程式設計師 例如 json字串 var str1 json物件 var str2 一 json字串轉換為json物件 要使用上面的str1,必須使用下面的方法先轉化為json物件 由json字串轉換為json物件 var obj eval str 或者var obj str.parsejson ...