Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   decimales (https://www.clubdelphi.com/foros/showthread.php?t=67433)

anoniboxx 16-04-2010 18:34:00

decimales
 
hola amigos tengo un problemita q no he podido resolver:
resulta q en mi progra suma valores con 2 decimales como 7.33 5.83 o 7.00 y la sumatoria de estos se guardan en un bd en access en un campo doble fijo con 2 decimales pero hay 2 variables q suman lo mismo a y b y cuando muestran el resultado a sale con 40.25 y b con 40.31 y no se porq ni como resolverlo alguda idea de por q y/o como resolverlo gracias de antemano saludos....

Casimiro Notevi 16-04-2010 18:56:14

Y cómo te ayudamos si no nos das más datos?, no podemos ver tu ordenador :confused:, explícanos un poquito más, por favor.
Te sugieron que leas la guía de estilo de clubdelphi, muchas gracias :)

Chris 16-04-2010 19:25:25

Cita:

Empezado por anoniboxx (Mensaje 360785)
hola amigos tengo un problemita q no he podido resolver:
resulta q en mi progra suma valores con 2 decimales como 7.33 5.83 o 7.00 y la sumatoria de estos se guardan en un bd en access en un campo doble fijo con 2 decimales pero hay 2 variables q suman lo mismo a y b y cuando muestran el resultado a sale con 40.25 y b con 40.31 y no se porq ni como resolverlo alguda idea de por q y/o como resolverlo gracias de antemano saludos....

mmm... peculiar problema el tuyo.

Revisa muy bien tu código. Otra sugerencia es que inicies ambas variables siempre a 0.

Saludos,
Chris

luisgutierrezb 16-04-2010 21:09:01

yo lo que te sugiero es que utilices variables de tipo currency

escafandra 16-04-2010 22:54:27

Cita:

Empezado por anoniboxx (Mensaje 360785)
... pero hay 2 variables q suman lo mismo a y b y cuando muestran el resultado a sale con 40.25 y b con 40.31 y no se porq ni como resolverlo....

Sin mostrar el código de la definición de esas dos variables y como se encuentra la suma, no se te puede decir gran cosa. Revisa si tienes alguna constate, que operaciones se hacen y los tipos de todas las variables de paso.

Saludos.

anoniboxx 16-04-2010 23:20:46

if(Form4->ADOT->FieldValues["Lunes"]==Form5->Label1->Caption)
{hs=hs+7.3;hs2=hs2+7.33;}
eso lo hago igual con cada dia de la semana.. el caption del label es un tex porq no lo puedo comparar directamente con "palabra", las dos estan inicalizadan en "0" al principio del codigo y como digo en el primer mensaje estos valores al final de la semana se guardan en la bd de hacs q tienen los campos definidos como doble fijo con 2 decimales... y pues no se q puede tener mal.. deberia tener los mismos valores al final de la semana.. al final del recorrido (comparar todos los dia de las semanan) estos son los resultados
hs= 43.79 y hs2=43.98 eso es mucha diferencia y en otros casos por q las comparaciones son diferentes y suman distintos estos son los resultados

hs=47.55 y hs2=47.65
porfa me pueden serguir orientando estoy muy confundido por esta cituacion... gracias por su ayuda saludos...

escafandra 17-04-2010 12:25:59

¿Cómo están definidas hs y hs2? ¿Cómo las inicializas?

Saludos.

anoniboxx 18-04-2010 07:14:55

las tengo definidas en el programa como float, cuando la guardo en la BD se guardan como doble fijo de dos decimales. ese es el problema? cuando escribo doble en C no me aparece en negrita. gracias saludos

escafandra 18-04-2010 23:57:10

Una cosa me llama la atención:
Cita:

Empezado por anoniboxx (Mensaje 360840)
if(Form4->ADOT->FieldValues["Lunes"]==Form5->Label1->Caption)
{hs=hs+7.3;hs2=hs2+7.33;}.

Si sumas valores diferentes no esperes valores iguales.

Por otro lado, si a un float le sumas el resultado de una operaioón de un int con una cte sin decimales, el resultado sumado es un int, osea no tiene decimales. Esto es importante si estas haciendo divisiones. No es lo mismo estas dos expresiones:
Código:

int n = 9;
float f1 = n/2;    // f1 vale 4
float f2 = n/2.0;  // f2 vale 4.5

Mira a ver si tienes expresiones como esas.

Saludos.

anoniboxx 19-04-2010 19:15:09

ok gracias voy a revisar eso de 7.3 y 7.33 porq creo q eso ya lo acomode y no solo tiene q hacer esa operacion de supar se gun la condicion q cupla.. gracia spor su ayuda... saludos


La franja horaria es GMT +2. Ahora son las 00:24:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi