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.

¿Por qué aparecen nuevos números al final de una variable doble?

Aquí está mi código:


#include <stdio.h> #include <math.h> double Mul(double X,double Y,double Z) { Y=Y*pow(10,6); Y=Y+Z; X=(X*pow(10,12))+Y; //X=114360000000000000+117239051145; //X=Y; return X; } int main() { double Hello=Mul(114360,117239,511432); printf("%f",Hello); return 0; }

El resultado debería ser “114360117239511432” pero obtengo “114360117239511424”. Necesito saber por qué 511432 se convierte en 511424 y cómo puedo resolver este problema.</math.h></stdio.h>

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código se debe a la precisión limitada del tipo de dato double. El valor 511432, al sumarse a Y=117239000000 (multiplicado por pow(10,6)), excede la máxima precisión del tipo de dato double, lo que resulta en la pérdida de los dígitos finales y el redondeo a 511424.

    Para solucionar este problema, se puede intentar utilizar un tipo de dato con una precisión mayor, como long double o utilizar una cadena para almacenar el resultado final en lugar de double. Alternativamente, se puede intentar descomponer las multiplicaciones y sumas en partes más pequeñas, para que no se pierda la precisión.

Comments are closed.