У числовой переменной должно быть 4 сегмента:
знак - знак

;
радикс - система исчисления: двоичная, восьмеричная, десятичная, шестнадцатиричная ;
мантисса - мантисса числа

;
экспонента - степень, в которую нужно возвести десять.
Например 12 в десятичной системе исчисления кодируется так:
+ 10 1.2 1
Т.е. + 1.2 * 10^1;
Поэтому в С и С++ инт - 4 байта, флоат - 4 байта, дабл - 8 байт - каждому сегменту по 2 байта (или мантиссе и экспоненте по 3 байта, тут яхз. Хотя не, наверно все же по 2 байта каждому сегменту: дабл - двойной.)
В общем, см. загловок cfloat и
http://www.cplusplus.com/К примеру, если есть необходимость, то таким способом можно хранить и double, где в зависимости от числа зависит количество используемых байтов. С и С++ позволяют такое сделать.
Получается, в дабле сэкономить можно только на мантиссе и экспоненте, зачем тогда так извращаться с даблом, не проще использовать флоат? Если только из научных интересов.