Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿Como hacer que el programa compare números correctamente?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿Como hacer que el programa compare números correctamente? Responder citando

Hace apenas medio año que conozco C++, y estoy desarrollando un programa de cálculo de cámaras frigoríficas, y me ha surgido un importante problema:
Quiero que én una (Edit2) aparezca un valor en función de lo que muestra otra (Edit1). Por ejemplo si en Edit1 aparece "36000", en Edit2 deberá aparecer "40000". Algo tan simple como:
if (Edit1->Text<40000)
Edit2->Text=40000;
El valor de Edit1 viene dado por operaciones anteriores.
El problema surge cuando el número tiene un dígito menos, es decir que al comparar considera mayor 2000 que 10000, porque evalúa número a número.
Quisiera saber si tengo que cambiar alguna opción general para que considere el número completo y compare de forma normal.
Agradezco vuestra ayuda porque estoy en un aprieto cojonudo.Gracias.
Volver arriba
Mensaje    Asunto: ¿Como hacer que el programa compare números correctamente? Responder citando

Hola, creo que el problema lo tienes en el IF, prueba hacer la comparación de esta forma:

if (Edit1->Text.ToInt() < 40000)

ToInt () -> Convierte la cadena en un entero.

Tambien existe ToIntDef (valor), esta funcion convierte la cadena en entero pero si hay algun error usa el valor por defecto que le hemos pasado por defecto.

Volver arriba
Mensaje    Asunto: ¿Como hacer que el programa compare números correctamente? Responder citando

A veces a Edit1 entran valores decimales, por lo que quería convertirlo en todo caso en un flotante, y he probado con ToFloat, a ver si colaba, pero no.
Le he dado unas vueltas y al final he conseguido lo que quería así:

float a=Edit1->Text*1;
{
if(a<40000)
Edit2->Text=40000;
if(a<2000)
Edit2->Text=2000;
etc...
}
Al multiplicar por uno ya lo considera flotante, y funciona. Muchas gracias.

Volver arriba
Mensaje    Asunto: ¿Como hacer que el programa compare números correctamente? Responder citando

Tengan cuidado al declarar variables float, tengo el Builder 5.0 update pack 1 y me dieron mis cocolazos (y unas patadas en el trasero) por que hice unos programas de bancos donde por su naturaleza son muy delicados, el caso es que definía mis variables como float y cuando las imprimía con FormatFloat("###,###,##0.00", cargos_z) la muy perra se comía una diferencia de centavos, lo malo es que rebotaron cheques por cerca de un millón de Pesos Mexicanos y la bronca con el banco y los proveedores que no pudieron cobrar su cheque. Según mi concepción del Float y el Double son casi lo mismo, la diferencia radica en la precisión, pero esta SOLO DEBE NOTARSE EN CANTIDADES MUY GRANDES O MUY PEQUEÑAS, así que para manejar cantidades de dinero un float nos ahorraría memoria (unos cuantos bytes y debería funcionar bien. Sin embargo ya me costo una lana averiguar que no es lo mismo.

ASI QUE CUIDADO CON EL FLOAT.

P.D. Si Alguien tiene un comentario al respecto se lo agradeceré

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.