今天看到一個視頻,上面寫了這樣一段程序:
#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個字節,但是表示范圍不一樣的情況!!!
