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

Pintar DOUBLE y LONG

Estas en el tema de Pintar DOUBLE y LONG en el foro de C/C++ en Foros del Web. Para los int y float e usado %d %f respectivamente. Para pintar double y long que se pone? Muchas gracias...
  #1 (permalink)  
Antiguo 22/09/2010, 11:26
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 4 meses
Puntos: 0
Pintar DOUBLE y LONG

Para los int y float e usado %d %f respectivamente. Para pintar double y long que se pone?

Muchas gracias
  #2 (permalink)  
Antiguo 22/09/2010, 12:25
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Pintar DOUBLE y LONG

No se a que te refieres a pintar. Si es que te refieres a imprimirlos en pantallas puedes usar printf y se usan los mismo codigos!
  #3 (permalink)  
Antiguo 22/09/2010, 12:48
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pintar DOUBLE y LONG

Si, me refiero a imprimirlos con printf.

Te explico, he tenido que cambiar todos los int de mi programa por long y todos los foat por double, ya que me digeron que alguna vez podría dar problemas.

Entonces lo he cambiado: variables, funciones, etc.

Pero creo que da algún problema a la hora de hacer printf sobre esos porque no muestra la mismo por patanlla. tengo %d %f
  #4 (permalink)  
Antiguo 22/09/2010, 13:07
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pintar DOUBLE y LONG

Exactamente desde que cambie los int por long y los float por double esta sentencia a cambiado, deberia de ser positivo pues es un contador que solo se incrementa, y sin embargo, después del cambio de tipos sale negativo!!

printf("%d\n", numero_muestras);
  #5 (permalink)  
Antiguo 22/09/2010, 13:15
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Pintar DOUBLE y LONG

Hay algo que no entiendo, como vas a cambiar los int por los long,por que lo hiciste? Si siempre funciona barbaro!

Mira esta pagina: http://www.cplusplus.com/reference/c...cstdio/printf/ .Fijate en los modificacodes de longitud(length).
  #6 (permalink)  
Antiguo 22/09/2010, 13:42
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pintar DOUBLE y LONG

mi tutor me dijo que aveces podrían desbordarse los int y los float, que sería mejor poner long y double :(
  #7 (permalink)  
Antiguo 22/09/2010, 14:51
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Pintar DOUBLE y LONG

SI esta bien...pero es complicado que puedan desbordarse.
La mejor practica es saber diferenciar cuando se necesitan de cuando no...ya que al utilizar long y double se utiliza mas memoria. En proyecto chico esto no influye pero a medida que se agrandan las cosas tambien el espacio de memoria utilizado... Por lo que es bueno desde la base saber diferenciar. Es mi punto de vista.
  #8 (permalink)  
Antiguo 22/09/2010, 15:12
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pintar DOUBLE y LONG

y como se explica que un contador que solo incremento, al imprimir de negativo?? si long es tan grande, no daría la vuelta ni mucho menos
  #9 (permalink)  
Antiguo 23/09/2010, 01:38
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 6 meses
Puntos: 73
Respuesta: Pintar DOUBLE y LONG

No indicas qué compilador ni sistema operativo utilizas, esa información puede ayudar a concretar mejor una respuesta.

En los compiladores para sistemas de 32 y 64 bits (prácticamente todos los actuales), el tipo int y el tipo long son el mismo (enteros de 32 bits), y si quieres un entero de 16 bits debes declararlo explícitamente como short.

En los compiladores para sistemas de 16 bits, el tipo int es de 16 bits, el mismo que el tipo short, y si quieres un entero de 32 bits debes declararlo explícitamente como long.

En cuanto a los tipos de coma flotante, son igual en ambos: Precisión simple (float, 32 bits) y precisión doble (double, 64 bits).

En los sistemas de 32 bits, dado que ahora la memoria es barata y abundante, y los procesadores muy potentes, de cara al almacenamiento y operación no vale la pena emplear enteros de 16 bits, ya que para operar con ellos los "promocionará" a 32 bits y los "degradará" a 16 bits una vez finalizada la operación. De cara a la memoria ocupada, por temas de organización interna, y dependiendo del compilador, ocuparán 2 ó 4 bytes (aunque sólo necesiten 2).

En cunto a los tipos de coma flotante, de cara a la velocidad de operación da lo mismo. Ahora las CPU llevan integrado el procesador de coma flotante, y los datos (tanto float como double) se "promocionan" a tipos internos que tienen aún más rango y precisión. Las diferencias las vas a encontrar en la precisión de los cálculos (ten en cuenta que, después de la operación, hay una "degradación" en la que se pierde información). Ciertamente, el tipo double ocupa el doble de memeoria, pero en los sistemas actuales es raro que eso sea un problema, y si necesitas mucho cálculo numérico se nota la precisión (vas perdiendo información conforme acumulas más cálculos).

Sobre el desbordamiento de ese contador, repasa bien tu código. Si antes funcionaba bien y ahora no, en alguna perte debe haber un cambio que no has hecho, o que no tenías que haber hecho, o alguna conversión de tipos que, después del cambio, te está fastidiando.

Resumiendo: Si tienes un compilador para 32/64 bits:
- Te da lo mismo int que long (y los correspondientes unsigned).
- Utiliza double, ganas precisión, no pierdes velocidad, y difícilmente la memoria será un problema.

Etiquetas: double, long, pintar
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 13:00.