Hola,
Por ejemplo:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
FILE *stream;
float d
= atof("-0.275510E+01");
stream
= fopen("data.bin", "w"); fwrite(&d
, sizeof(float), 1, stream
);
d = 0;
stream
= fopen("data.bin", "r"); fread(&d
, sizeof(float), 1, stream
);
return (0);
}
En este caso, se convierte la cadena de caracteres en un float con la función
atof, seguidamente lo almacenas en un archivo denominado 'data.bin', y seguidamente se vuelve a leer y se muestra en pantalla, se puede observar que el valor sigue siendo el mismo (posiblemente con una representación diferente -2.755100, pero el valor es exactamente el mismo --- con su respectivo error de precisión de todos los numeros 'flotantes' o 'dobles').
Si revisas el tamaño del archivo 'data.bin' (con 'dir' o 'ls', según el sistema operativo que estés usando --- desde el Explorador de Windows NO porque dice 1 o 4 Kb por otros motivos del NTFS), puedes observar que tiene de tamaño exactamente 4 bytes, porque cualquier float usa 4 bytes, en memoria y en disco.
Realmente no sé como explicar que un float es 'binario' interna y automáticamente, son 32 bits, usa 1 bit para el signo, 8 para la mantisa y veinte y tantos para el numero,
http://en.wikipedia.org/wiki/Single_precision .
No podemos ver que está guardado en binario, porque no tiene sentido para el ser humano, por eso solo podemos verlo en decimal o hexadecimal, (o haciendo un algoritmo que lo muestre en binario), está de mas decir que si ves el archivo internamente con un editor hexadecimal o el Block de Notas o GEdit, no vas a ver el número sino 'caracteres extraños' que se forman al intentar representar datos binarios en la tabla ASCII.
Saludos,