Necesito usar un archivo de texto existente para almacenar algunos valores muy precisos. Cuando se vuelva a leer, los números esencialmente deben ser exactamente equivalentes a los que se escribieron originalmente. Ahora, una persona normal usaría un archivo binario ... por una serie de razones, eso no es posible en este caso.mejor manera de generar una doble precisión completa en un archivo de texto
Entonces ... ¿alguno de ustedes tiene una buena manera de codificar un doble como una cadena de caracteres (aparte de aumentar la precisión). Mi primer pensamiento fue lanzar el doble a un char [] y escribir los caracteres. No creo que eso vaya a funcionar porque algunos de los caracteres no son visibles, producen sonidos e incluso terminan cadenas ('\ 0' ... ¡estoy hablando de ti!)
¿Pensamientos?
[Editar] - una vez que descubro cuál de las soluciones propuestas funciona mejor para mí, marcaré una como "la" solución.
Si quieres ser portátil que puede asumir nada acerca de la representación del número en coma flotante (no existe una definición en el estándar de los representados). Por lo tanto, la forma ** ÚNICA ** de hacer este portátil es simplemente imprimir el número con tanta precisión como sea posible. Ahora, si desea descartar la portabilidad, puede tener un formato binario (codificado en Base64 si lo desea). Pero luego perderá precisión al convertir al formato de flotación específico de la plataforma (a menos que sea exactamente igual que el sistema fuente). Pero luego no ha ganado nada con la impresión con total precisión. –
Escriba los caracteres como texto, es decir, convierta 'c/16' y' c% 16' a un carácter (ya sea 0-9 o A-F) e imprímalos. – user168715
Una cosa a considerar es que su compilador puede asignar dobles a registros de CPU con más de 64 bits de precisión. Cuando estos valores se escriben en la memoria como preparación para escribirlos en el disco, se truncan a 64 bits. Por lo tanto, incluso si guarda el doble en binario y lo lee, el valor de lectura no se garantiza a == el original. – user168715