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

Problema para Truncar numeros decimales en Builder C++

Estas en el tema de Problema para Truncar numeros decimales en Builder C++ en el foro de C/C++ en Foros del Web. Hola tengo un problema.. tengo este numero 4.5553423423535556575 y Quiero solo usar el 4.5 estaba usando la siguiente sintaxis. double a; a= Edit1->Text.ToDouble(); cout << ...
  #1 (permalink)  
Antiguo 12/03/2009, 10:03
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Problema para Truncar numeros decimales en Builder C++

Hola tengo un problema.. tengo este numero

4.5553423423535556575

y Quiero solo usar el 4.5

estaba usando la siguiente sintaxis.

double a;

a= Edit1->Text.ToDouble();
cout << a << setprecision(2) << endl;

Edit2->Text=a;

pero el resultado es el mismo numero.. con unos numeros si trabaja pero con otros no por ejemplo si funciona con este

0.5555555555555555555555 me devuelve 0.5 pero con otros no lo hace que opinan. soy medio nuevo en Builder y porfa hablenme en cristiano.
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #2 (permalink)  
Antiguo 13/03/2009, 02:35
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema para Truncar numeros decimales en Builder C++

Es una cadena, tratala como tal, busca el . y despues del mismo mas un caracter pone un cero terminador de cadena.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 13/03/2009 a las 05:43 Razón: Arreglado para mas genericidad.
  #3 (permalink)  
Antiguo 13/03/2009, 05:37
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: Problema para Truncar numeros decimales en Builder C++

tienes algun ejemplo ?
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #4 (permalink)  
Antiguo 13/03/2009, 05:48
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema para Truncar numeros decimales en Builder C++

Ojo que esta funcion cambia la cadena, si la queres conservar hace una copia antes de llamarla:

Código:
char *un_decimal(char *str)
{
  if (char *punto = strchr(str, '.')) //buscamos el punto
  {
    if (*(punto+1)) //nos aseguramos que la cadena no termina en .
    {
      *(punto+2) = 0;  //la cadena ya estaba lista o lo estara
    }
  }
  return str;
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 13/03/2009, 05:52
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: Problema para Truncar numeros decimales en Builder C++

double a;

a= Edit1->Text.ToDouble();
cout << a << setprecision(2) << endl;

Edit2->Text=a;


char *un_decimal(char *str)
{
if (char *punto = strchr(str, '.')) //buscamos el punto
{
if (*(punto+1)) //nos aseguramos que la cadena no termina en .
{
*(punto+2) = 0; //la cadena ya estaba lista o estara
}
}
return str;
}


un_deciman(4.55555); asi ?
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #6 (permalink)  
Antiguo 13/03/2009, 06:08
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema para Truncar numeros decimales en Builder C++

No, tal vez asi directamente:
Código:
Edit2->Text = un_decimal(Edit1->Text);
Sino hace una copia del texto (Edit1->Text).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 22:32.