C/Visual C - atof no es del todo exacto

 
Vista:

atof no es del todo exacto

Publicado por wakeup (2 intervenciones) el 02/04/2008 11:08:12
He reducido el codigo a algo tan sencillo como esto
[CODE] char number[]="0.58";

double valor = atof(number);[/CODE]

Al hacer eso valor es igual a 0.57999999999999996

Y algo parecido pasa si escojo otros valores, lo coge bien pero no del todo exacto.

Alguien sabe porque?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:atof no es del todo exacto

Publicado por Tom (619 intervenciones) el 02/04/2008 12:38:22
Sí.
La representación interna de los números en coma flotante ("decimales") es una aproximación. O sea, que no es, generalmente, posible almacenar __exactamente__ un número con decimales.

Sin embargo se trata de una representación bastante buena, mucho más de lo necesario para la mayoría de aplicaciones.

Otra cosa es que tú "pintes" mal el número. A mí, en Linux, este trozo de código me funciona perfectamente:

#include <stdio.h>
#include <stdlib.h>

/* */
int main() {
char *number = "0.58";
double valor = atof(number);

printf("%f ", valor); /* Muestra "0.580000" */
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:atof no es del todo exacto

Publicado por Jesus Davila Garcia (1 intervención) el 20/04/2008 07:51:57
Es debido a un error que se produce por el formato en el que se guardan los numero de punto flotante, debido a limitaciones del formato, se producen errores de truncamiento, aunque para la mayoria de los casos dicho error deberia ser despreciable, busca en google informacion acerca del formato de punto flotante de IEEE-754X. saludos
espero te sirva de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar