Foros del Web » Programación para mayores de 30 ;) » C/C++ »

atof no es del todo exacto

Estas en el tema de atof no es del todo exacto en el foro de C/C++ en Foros del Web. He reducido el codigo a algo tan sencillo como esto Código: char number[]="0.58"; double valor = atof(number); Al hacer eso valor es igual a 0.57999999999999996 ...
  #1 (permalink)  
Antiguo 02/04/2008, 03:08
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 7 meses
Puntos: 1
atof no es del todo exacto

He reducido el codigo a algo tan sencillo como esto
Código:
	char number[]="0.58";

	double valor = atof(number);
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
__________________
Blog Hip Hop
  #2 (permalink)  
Antiguo 02/04/2008, 11:13
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: atof no es del todo exacto

La verdad no se porque ocurre ese fenomeno, pero a mi tambien me ha pasado, es por eso que prefiero emplear sprintf o sscanf para realizar las conversiones de numeros a cadenas y viceversa, con estas funciones si es exacto

Espero esto te pueda servir

http://www.conclase.net/c/librerias/...hp?fun=sprintf

http://www.conclase.net/c/librerias/...php?fun=sscanf
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #3 (permalink)  
Antiguo 03/04/2008, 01:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 7 meses
Puntos: 1
Re: atof no es del todo exacto

He probado con sscanf y me convierte igual el numero :(
__________________
Blog Hip Hop
  #4 (permalink)  
Antiguo 03/04/2008, 08:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: atof no es del todo exacto

¿Que compilador estas usando?

Esto con VC++ muestra el resultado correcto:
Código:
  char number[]="0.58";
  double valor = atof(number);
  printf("%f\n", valor);
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 03/04/2008, 11:15
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: atof no es del todo exacto

cuando uses sscanf o sprintf hay que tener cuidado con el parámetro de conversion (la verdad no se como se llame pero es el que tiene el %[letra])

prueba

Código:
       sscanf(number,"%lf",&valor);
como te menciono con estas dos funciones hay que cuidar el parametro que especifica la conversion.

Tambien va esto por si te sirve

http://www.conclase.net/c/librerias/...hp?fun=fscanf2
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:36.