1樓:韌勁
c語言中float,double型別,在記憶體中的結構(儲存方式)
從儲存結構和演算法上來講,double和float是一樣的,不一樣的
地方僅僅是float是32位的,double是64位的,所以double能儲存更高的精度。
任何資料在記憶體中都是以二進位制(0或1)順序儲存的,每一個1或0被稱為1位,而在x86cpu上一個位元組是8位。比如一個16位(2 位元組)的short int型變數的值是1000,那麼它的二進位制表達就是:00000011 11101000。
由於intel cpu的架構原因,它是按位元組倒 序儲存的,那麼就因該是這樣:11101000 00000011,這就是定點數1000在記憶體中的結構。
目前c/c++編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。
這種結構是一種科學計數法,用符號、指數和 尾數來表示,底數定為2——即把一個浮點數表示為尾數乘以2的指數次方再添上符號。
下面是具體的規格:
型別 符號位 階碼 尾數 長度
float 1 8 23 32
double 1 11 52 64
臨時數 1 15 64 80
由於通常c編譯器預設浮點數是double型的,下面以double為例: 共計64位,摺合8位元組。
由最高到最低位分別是第63、62、61、……、0位: 最高位63位是符號位,1表示該數為負,0正; 62-52位,一共11位是指數位; 51-0位,一共52位是尾數位。
按照ieee浮點數表示法,下面將把double型浮點數38414.4轉換為十六進位制**。
把整數部和小數部分開處理:整數部直接化十六進位制:960e。
小數的處理: 0.4=0.
5*0+0.25*1+0.125*1+0.
0625*0+…… 實際上這永遠算不完!這就是著名的浮點數精度問題。所以直到加上前面的整數部分算夠53位就行了(隱藏位技術:
最高位的1 不寫入記憶體)。
如果你夠耐心,手工算到53位那麼因該是:38414.4(10)=1001011000001110.0110101010101010101010101010101010101(2)
科學記數法為:1.001……乘以2的15次方。
指數為15! 於是來看階碼,一共11位,可以表示範圍是-1024 ~ 1023。因為指數可以為負,為了便於計算,規定都先加上1023,在這裡, 15+1023=1038。
二進位制表示為:100 00001110 符號位:正—— 0 !
合在一起(尾數二進位制最高位的1不要): 01000000 11100010 11000001 11001101 01010101 01010101 01010101 01010101 按位元組倒序儲存的十六進位制數就是: 55 55 55 55 cd c1 e2 40。
2樓:匿名使用者
在c++中輸出一個浮點數n,並保留指定的小數位數,應該怎麼處理呢?首先先把iomanip標頭檔案包含進來,然後對浮點數n按下列操作輸出(假設保留2位小數):
cout< c中還真的不記得,你可以看看這個函式對照下,自己寫一個。 3樓:匿名使用者 沒有四捨五入的話,要手動在後面加上 a = floor(a*100 + 0.5)/100.0; 4樓:匿名使用者 你是要把這個數繼續作為變數使用麼? 可以這樣子: char sztmp[30] = "\0"; sprintf(sztmp, "%.2lf", a); a = atof(sztmp); 這樣,兩位小數後面的都沒去掉了; 但是列印顯示的話 還是要用%.2lf,不然後面還是會有很多0,這是數值的精度位數; 5樓:昔拉 printf("a=%.2f",a); .2f前面是有個小數點的, 還有什麼問題嗎 6樓:匿名使用者 printf("a=%.2f",a); c語言編寫程式,對一個double型資料進行四捨五入,要求保留兩位有效小數,求演算法。 7樓:跪著作揖 例如double型的資料為a=5.1413,程式如下: #incloud main( ) 這時候printf輸出的 專結果將是5.14。 擴充套件資料屬 : c語言編寫程式,對double型資料進行四捨五入,保留三位有效數字,程式如下: 這裡以b=8.8888 #incloud main( ) 這時候printf輸出的結果將是8.889。 8樓: 推薦的方法:首先將該數存入double型別的變數中,然後將該變數乘以100(小數點後移 回2位),加上0.5,再強制取整,最 答後除以100.0(小數點前移2位)即得到了結果。 表示式如下(double變數為i):i = (int)(i*100+0.5)/100.0 使用printf輸出時,如果要保留兩位小數輸出,請使用%.2f或%.2lf佔位符 寫一段簡單的c語言程式: 輸入一個double型別的數,使它保留小數點後兩位,對第三位四捨五入處理 9樓:匿名使用者 1 輸入double型別數。 2 利用取整,將第三位四捨五入。 3 輸出結果。 注意,不可以直接以%.2lf輸出,因為題目要求的是在程式中四捨五入處理,而不是僅僅輸出四捨五入後的結果。 **:#include int main() 10樓:匿名使用者 #include int main() //無論 是3.456還是3.45615...都滿足條件哈! c語言:怎麼樣使結果輸出時保留一位小數;保留兩位小數? 11樓:蹦迪小王子啊 用定來點格式。 float 型 %.2f 就是源 小數bai2位, du %.1f 就是小數zhi1位。 double 型 用dao %.2f 就是小數2位, %.1f 就是小數1位。 double 型 用 %.2lf 就是小數2位, %.1lf 就是小數1位。 擴充套件資料 算術運算子 用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。 關係運算子 用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。 邏輯運算子 用於邏輯運算。包括與(&&)、或(||)、非(!)三種。 位操作運算子 參與運算的量,按二進位制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。 賦值運算子 用於賦值運算,分為簡單賦值(=)、複合算術賦值(+=,-=,*=,/=,%=)和複合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。 12樓:金色潛鳥 用定點格式。 float 型 %.2f 就是小數2位, %.1f 就是小數專1位double 型 用屬 %.2f 就是小數2位, %.1f 就是小數1位 double 型 用 %.2lf 就是小數2位, %.1lf 就是小數1位 c語言中算術運算子有以下這些 例項 include int main 當上面的 被編譯和執行時,它會產生下列結果 line 1 c 的值是 31 line 2 c 的值是 11 line 3 c 的值是 210 line 4 c 的值是 2 line 5 c 的值是 1 line 6 c 的值是 2... 如果做bs架構的話可以用我們方正飛鴻平臺來做,快速搭建,省時省力,系統穩定,快捷維護 c語言課程設計 職工資訊管理系統 120 自己做吧,我c語言是不太熟悉。命令列下要實現你說的這些東西至少得要3個小時!c語言課程設計 職工資訊管理系統 就給10分,沒人會給你做的 c語言課程設計,職工資訊管理系統 ... include include void main include 必須的時間函式標頭檔案 time t 時間型別 time.h 定義 struct tm 時間結構,time.h 定義如下 int tm sec int tm min int tm hour int tm mday int tm mo...c語言中有哪些算術運算子C語言中有哪些算術運算子
C語言課程設計職工管理系統,C語言課程設計 職工管理系統
如何用c語言獲取當前系統時間