es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo imprimir el contenido exacto de un número de punto flotante de doble precisión?

Tengo un double x, resultado de un cálculo, para el cual x > 1.0 retorna true. Quiero poder imprimir la representación exacta en notación científica de ese número sin dígitos basura. Sé que tiene 64 bits, por lo tanto, me gustaría ver el número exacto que representa.

Tengo problemas porque, por ejemplo, si y = 1.01 e imprimo printf("%.20lf", y) obtengo 1.01000000000000000888, lo cual tiene dígitos basura al final.

Estoy bien con cualquier notación (científica o cualquier otra) siempre y cuando pueda leer el double exacto que representa x o y.

Esto podría ser trivial, pero no puedo encontrar ninguna solución. Gracias por las sugerencias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Para imprimir la representación exacta de double x sin ningún dígito de basura, podemos utilizar la función std::cout junto con la función std::setprecision() de la biblioteca <iomanip>. Aquí hay un ejemplo de fragmento de código:

    “`c++
    #include // para cout
    #include // para setprecision

    int main() {
    double x = 1.010;
    std::cout << std::setprecision(17) << x << std::endl;
    return 0;
    }


    En este ejemplo, establecemos la precisión a `17` utilizando `std::setprecision()`, lo que garantiza que obtengamos la representación exacta del valor `double` `x`. Utilizamos `std::cout` para imprimir el resultado, que utilizará automáticamente la notación científica si es necesario. La salida será:

    1.0100000000000002
    “`

    Tenga en cuenta que esta salida puede no coincidir con nuestro valor double original x, pero es la representación exacta del double que x representa en la memoria.

    Podemos modificar la precisión según sea necesario para mostrar el número deseado de dígitos.

Comments are closed.