SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: player_ en Lunes 22 de Febrero de 2010, 09:07

Título: No redondear números
Publicado por: player_ en Lunes 22 de Febrero de 2010, 09:07
Hay alguna forma de que haciendo cálculos con valores double, el valor se almacene en una variable con los dígitos exactos del cálculo y no con el redondeo automático que hace?

Gracias.
Título: Re: No redondear números
Publicado por: ProfesorX en Lunes 22 de Febrero de 2010, 18:26
No es posible, cuando utilizas double/single, siempre habra un redondeo, esto es debido a la forma en como se almacenan internamente los valores de tipo double/single.

Editado: borre lo que mencione acerca de decimal, ya que decimal no existe en C++, solo en C#, aun asi, lo anterior que no borre si aplica para C++

Saludos :)
Título: Re: No redondear números
Publicado por: player_ en Lunes 22 de Febrero de 2010, 23:51
Ya me imaginaba que no se podría, necesitaba hacer unos cálculos bastante precisos pero más o menos lo tengo solucionado.

Para no abrir otro tema aprovecho este para realizar otra pregunta, hay alguna función en c++ para indicar si un fichero existe? El usuario introduce el nombre del fichero y se comprueba si existe en el mismo directorio. Hasta ahora lo único que he conseguido es abrirlo en modo lectura y si existe, cierro el fichero y lo vuelvo a abrir en modo de escritura, ya que si lo abro directamente en modo escritura, aunque el fichero no exista, me dice que existe (lo crea) y escribe en él. Gracias.
Título: Re: No redondear números
Publicado por: su - en Martes 23 de Febrero de 2010, 03:02
Puedes usar la funcion stat() (http://www.opengroup.org/onlinepubs/000095399/functions/stat.html) de <sys/stat.h>

Para Windows: ver esto. (http://msdn.microsoft.com/en-us/library/14h5k7ff(VS.80).aspx)
Título: Re: No redondear números
Publicado por: BerserkO en Miércoles 24 de Febrero de 2010, 00:29
claro que puedes, utiliza la libreria <iomanip> y utiliza la funcion setpresicion( x ), el parametro que pasas es el numero de decimales que quieres ver.
por ejemplo.

#include <iomanip>
using::setpresicion;
#include <iostream>
using::cout;

main(){

double x = 7.675
double y = 9.9876543
cout << setpresicion(9) << x/y << endl;

}

asi te dara 9 decimales de presicion, espero te ayude.


}
Título: Re: No redondear números
Publicado por: Eternal Idol en Miércoles 24 de Febrero de 2010, 10:34
No, no se puede:
http://en.wikipedia.org/wiki/Floating_point (http://en.wikipedia.org/wiki/Floating_point" onclick="window.open(this.href);return false;)