C/Visual C - Visualización de todos los decimales

 
Vista:

Visualización de todos los decimales

Publicado por Peter (4 intervenciones) el 09/06/2010 15:17:06
Hola!
Estoy depurando un programa en c en el que implemento un algoritmo que previamente tenía hecho en Matlab. (Para más información ver http://www.lawebdelprogramador.com/news/mostrar_new.php?id=132&texto=Matlab&n1=562895&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0# )
El caso es que sospecho que al hacer printf mi programa no me está mostrando una variable determinada con toda la precisión que podría ya que esta es de tipo double.
Si se supone que el tipo double de c puede almacenar números reales del 1,7E-307 al 1,7E308. creo que podría visualizar el valor de la variable por pantalla si esta fuese 7.00830154842331e-017 sin embargo solo visualizo en pantalla lo siguiente:
0.000000
¿Hay alguna manera que me mostrase números más pequeños que 1e-6 (10^(-6))
Gracias por vuestra ayuda.
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:Visualización de todos los decimales

Publicado por Capitan Kirk (97 intervenciones) el 11/06/2010 14:15:59
Por defecto, printf (y el resto de funciones de su familia) muestran solamente 6 decimales. Para lo que quieres, tienes que añadir algunas opciones a los especificadores de formato. Te indico algunos ejemplos:

printf("%f", x);
Imprime x con 6 cifras decimales. Si x es muy pequeño, te ocurrirá lo que indicas en tu ejemplo. Si es muy grande, imprimirá todos los dígitos que hagan falta para la parte entera, pero siempre con 6 cifras decimales.

printf("%+f", x);
Igual que el anterior, pero fuerza a que imprima el signo (por defecto, solamente se imprime el signo si es negativo). Si utilizas este especificador, debe ir el primero de todos. Es válido para cualquier formato.

printf("%16.10f", x);
imprime x con 16 caracteres en total, de los cuales 10 son decimales. En el total de caracteres hay que contar el signo y el punto decimal. Si la parte entera del número es mayor que lo que cabría por el formato, pasará del formato y te lo escribirá entero, pero siempre con el número de cifras decimales que le indiques.

printf("%e", x);
imoprime x en formato exponencial, con 6 cifras decimales por defecto. Por ejemplo, el numerito que indicaste te aparecería como

_7.008302e-17 (el subrayado indica un espacio en blanco que correspondería al signo positivo)

A este formato también le puedes añadir las especificaciones de tamaño y signo. Si le pones especificación de tamaño, hay que contar el signo, el punto decimal, el signo del exponente, la letra 'e' y el tamaño del exponente.

printf("%g", x);
Imprime x utilizando el formato de coma flotante o el exponencial, aquel de ellos que resulte con menos caracteres de salida.

Espero que te sirva de ayuda. Saludos,
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:Visualización de todos los decimales

Publicado por Peter (4 intervenciones) el 12/06/2010 18:15:56
Hey! Muchas gracias!!
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