今天看到一個視頻,上面寫了這樣一段程序:
#include <stdio.h> #include <float.h> #include <limits.h> int main( void ) { printf("%d, %d\n", sizeof(float), sizeof(int)); printf("%f, %f\n", FLT_MAX, FLT_MIN); printf("%d, %d\n", INT_MAX, INT_MIN); return 0; }
顯示結果如下:
一開始感覺很差異,因為float和int都是四個字節,可是為什么可以表示的范圍有這么大的差別??
看到解釋之后才明白,浮點數在內存中的存儲是以指數的形式存在的。
就像1.1 - 1.2之間,理論上有無限個浮點數存在,如果要一一映射,在內存中是不可能實現的
因此,內存中的浮點數以指數形式存儲,而且小數點的位數是可以變動的。
所以,才會出現同樣是4個字節,但是表示范圍不一樣的情況!!!