浮點型資料是用來表示具有小數點的實數的。為什麼在c中把實數稱為浮點數呢?在c語言中,實數是以指數形式存放在儲存單元中的。乙個實數表示為指數可以有不止一種形式,如3.14159可以表示為:3.14159×10e0,0.314159×10e1,0.0314159×10e2,31.4159×10e-1,314.159×10e-2等,它們代表同乙個值。可以看出:小數點的位置是可以在314159幾個數字之間和之前或之後(加0)浮動的,只要在小數點位置浮動的同時改變指數的值,就可以保證它的值不會改變。由於小數點位置可以浮動,所以實數的指數形式稱為浮點數。
在指數形式的多種表示方式中把小數部分中小數點前的數字為0、小數點後第1位數字不為0的表示形式稱為規範化的指數形式,如0.314159×10e1就是3.14159的規範化的指數形式。乙個實數只有乙個規範化的指數形式,在程式以指數形式輸出乙個實數時,必然以規範化的指數形式輸出,如0.314159e001.
浮點數型別包括float(單精度浮點型)、double(雙精度浮點型)、long double(長雙精度浮點型)。
(1)float型(單精度浮點型)。編譯系統為每乙個float型變數分配4個位元組,數值以規範化的二進位制數指數形式放在儲存單元中。在儲存時,系統將實型資料分成小數部分和指數部分兩個部分,分別存放。小數部分的小數點前面的數為0.如3.14159在記憶體中的存放形式可以用圖1表示。
圖1 小數在記憶體中的存放
圖1是用十進位制數來示意的,實際上在計算機中是用二進位制數來表示小數部分以及用2的冪次來表示指數部分的。在4個位元組(32位)中,究竟用多少位來表示小數部分,多少位來表示指數部分,c標準並無具體規定,由各c語言編譯系統自定。有的c語言編譯系統以24位表示小數部分(包括符號),以8位表示指數部分(包括指數的符號)。由於用二進位制形式表示乙個實數以及儲存單元的長度是有限的,因此不可能得到完全精確的值,只能儲存成有限的精確度。小數部分佔的位(bit)數愈多,數的有效數字愈多,精度也就愈高。指數部分佔的位數愈多,則能表示的數值範圍愈大。float型資料能得到6位有效數字,數值範圍為-3.4×10-38~3.4×10e38.
(2)double型(雙精度浮點型)。為了擴大能表示的數值範圍,用8個位元組儲存乙個double型資料,可以得到15位有效數字,數值範圍-1.7×10e-308~1.7×10e308.在c語言中進行浮點數的算術運算時,將float型資料都自動轉換為double型,然後進行運算。
(3)long long型(長雙精度)型,不同的編譯系統對long double型的處理方法不同,turbo c對long double型分配16個位元組。而visual c++ 6.0則對long double型和double型一樣處理,分配8個位元組。
實型資料有關情況
筆記 浮點型資料
浮點數 floating point number 就是實數 real number 浮點數有兩種表示形式 1 十進位制小數形式。它由數字和小數點組成。0.123 123.123.0 0.0都是十進位制小數形式。2 指數形式。如123e3或123e3都代表123 103。注意字母e或e之前必須有數字...
6 浮點型資料
小數 浮點數 型別位元組 負數取值範圍 float 4位元組 3.4e 38 1.4e 45 1.4e 45 3.4e 38 double 8位元組 1.7e 3.8 4.9e 324 4.9e 45 3.4e 38 注 e 表示10,e之後的數字代表的是n次方 浮點型數值採用科學計數法表示 2e3...
浮點型資料型別
double 和 float 資料型別都是浮點型,在從記憶體中取出來後,即便之前的賦值是個 整型的資料型別,把浮點型取出來後都會變成實數的小數,比如賦值為0,取出來後就是0.0了 float var f 0 double var d 0 system.out.println var f 0.0 sy...