Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con float.... (https://www.clubdelphi.com/foros/showthread.php?t=28439)

ilichhernandez 20-12-2005 04:12:22

Problemas con float....
 
hola otra vez....tengo un grave problema de float.....tengo datos que vienen de una tabla, los leo y tengo valores resultados, minimos y maximos, entonces debo compararlos, para saber si esta en el rango de minimo y maximo, para esto realizo la comparacion y luego si cumple el rango le doy tag 4 y si esta fuerza de rango le doy tag 5, lo he echo de la siguiente manera.....

Código Delphi [-]
With dm.tcomparafinal Do
 Begin 
         ana :=  FieldByName('analisis').AsString;
         res :=  FieldByName('resultado').AsString;
         uni :=  FieldByName('unidad').AsString;
         min :=  FieldByName('minimo').AsString;
         max :=  FieldByName('maximo').AsString;
 If isnumber(res) then
            begin
               if isfloat(res) then
                  begin
                     fres := StrtoFloat(res);
                  end
                  Else
                  Begin
                     fres := strtoint(res);
                  end;
  end;
  if isnumber(min) then
            begin
               if isfloat(min) then
                  begin
                     fres := StrtoFloat(min);
                  end
                  Else
                  Begin
                     fres := strtoint(min);
                  end;
  end;
  If isnumber(max) then
            begin
               if isfloat(max) then
                  begin
                     fres := StrtoFloat(max);
                  end
                  Else
                  Begin
                     fres := strtoint(max);
                  end;
  end;
If ((min = '') and (max= '')) then
     Begin  
       caption  :=  '---->' + ' Análisis no comparado'; 
       tag := 4;
     end;   
     If ((min = '') and (max <> '')) then
          Begin  //2
            caption :=  '---->' + ' Análisis válido es menor o igual a :' + max;
            If ((fres) > (fmax)) then
              begin  
                  tag := 5;
              end    
              Else
              Begin  
                  tag := 4;
              end;   
          end  //2
          Else
          Begin   //5
             If ((min <> '') and (max <> '')) then
                Begin  //6
                   caption :=  '---->' + ' Análisis válido dentro del rango : ' + min  + ' -- ' + max;
                   If ((fres > fmin) and (fres < fmax)) then
                        Begin  
                           tag := 4;
                         end    
                         Else
                         Begin   
                           tag := 5;
                         end;    
                  end;   //6
            end;   //5               
end;

Al hacer la comparacion no compara correctamente los valores y por lo tanto me coloca los tag de manera no correcta generandome problemas posteriores....lo hew ruteado y no se cual es el error, tal vez los float no se comparan asi.... quizas.... no,lo se...... agradeceria enormemente una ayuda !!

Gracias

jachguate 20-12-2005 05:22:44

Pues los float se comparan como números normales:

Código Delphi [-]
if Campo1.AsFloat > Campo2.AsFloat then
  ShowMessage('Campo1 mayor!')
else if Campo2.AsFloat > Campo1.AsFloat then
  ShowMessage('Campo2 mayor!')
else
  ShowMessage('Iguales!');

Me parece que vos los estas comparando como strings, pero entonces tenes que, por ejemplo

Código Delphi [-]
  if '9' > '1500' then
    ShowMessage('la cadena "9" es mayor que la cadena "1500"');

Hasta luego.

;)

ilichhernandez 20-12-2005 16:19:20

gracias....


La franja horaria es GMT +2. Ahora son las 10:31:44.

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