Estoy escribiendo un programa que imprime literales de punto flotante para ser utilizado dentro de otro programa.flotante de impresión, preservando la precisión
¿Cuántos dígitos necesito imprimir para preservar la precisión del flotador original?
Dado que un flotador tiene 24 * (log(2)/log(10)) = 7.2247199
dígitos decimales de precisión, mi idea inicial fue que la impresión de 8 dígitos debería ser suficiente. Pero si no tengo suerte, esos 0.2247199
se distribuyen a la izquierda y a la derecha de los 7 dígitos significativos, por lo que probablemente debería imprimir 9 dígitos decimales.
¿Mi análisis es correcto? ¿Son suficientes 9 decimales para todos los casos? Me gusta printf("%.9g", x);
?
¿Hay una función estándar que convierta un flotador en una cadena con el número mínimo de dígitos decimales requerido para ese valor, en el caso de que 7 u 8 sean suficientes, así que no imprimo dígitos innecesarios?
Nota: No puedo usar literales de coma flotante hexadecimales, porque C++ estándar no los admite.
Uso 1000 dígitos y el clip de los ceros! ;) –
ya que no se puede convertir un flotante basado en binarios a una fracción decimal sin un error, yo propondría simplemente eliminar la representación binaria (o un exponente mantissa + por separado). – Vlad
@Vlad no puedes? ¿No son todas las fracciones binarias representables como un decimal finito? –