回覆列表
  • 1 # 使用者2803467940069

    浮點型常量浮點型即生活中使用的小數型別(例如3.14),例如賬戶的餘額,銀行的存款利率等等都是浮點型。C語言中按照精度的不同分別使用float,double和long double表示,預設浮點型別是double,float佔據四個位元組,double佔據8個位元組,long double大於等於8個位元組,Windows 32位和64位系統long double都是8個位元組,Ubuntu18.04系統下long double是佔據16個位元組。浮點數的常量可以使用十進位制的小數和科學計數法表示,科學計數法可以儲存特大或者特小的數字浮點數變數在初始化浮點數變數時,預設值建議為0.0或者0.0f,賦值時變數的值和變數的型別保持一致。printf()函式輸出float型別的變數使用格式符%f,輸出double型別的變數使用%lf。浮點型極限C語言在limits.h的標頭檔案中使用常量定義了float和double以及long double的極限值,我們可以使用sizeof()關鍵字求出float,double和long double的位元組數量以及使用常量FLT_MAX,FLT_MIN求出float表示的最大值和最小值以及DBL_MAX,DBL_MIN求出double所能表示的最大值和最小值。在windows上double和long double是等價的,但是在Linux(例如Ubuntu 18.04上)long double是佔據16個位元組,這也就意味著long double的極限比double更大。浮點數在記憶體中的儲存首先明確一點,無論是整型、浮點型還是字元等等資料型別在計算機底層都是以二進位制的方式儲存的。浮點數在記憶體中的儲存和整數不同,因為整數都可以轉換為一一對應的二進位制資料。而浮點數的儲存是由符號位(sign)+指數位(exponent)+小數位(fraction)組成。其中float是由1位符號位+8位指數+23位小陣列成,而double是由1位符號位+11位指數位+52位小數位組成。int和float同樣佔據四個位元組的記憶體,但是float所能表示的最大值比int大得多,其根本原因是浮點數在記憶體中是以指數的方式儲存。我們都知道在記憶體中,一個float型別的實數變數是佔據32位,即32個二進位制的0或者1組成從低位依次到高位叫第0位和第31位,這32位可以由三部分組成:符號位:第31位數表示符號位,如果為0表示整數,如果為1表示負數指數:第23位到第30位,這8個二進位制表示該實數轉化為規格化的二進位制實數後的指數與127(127即所謂的偏移量)之和所謂階碼,規格化的二進位制實數只能在-127-127之間。小數位:第0位到第22位,最多可以表示23位二進位制小數,否則超過了就會產生誤差。浮點數相等性判斷float佔據四個位元組,提供的有效位是6-7位,而double佔據八個位元組,提供的有效位數是15-16位,如果在使用float或者double表示實數時超過有效數字,若拿來進行關係運算(例如等於)的話,會得到一個錯誤的結果。

  • 中秋節和大豐收的關聯?
  • 曹操為什麼不敢讓許褚挑顏良?