Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Hacer operación matemática con un Label con formatfloat (https://www.clubdelphi.com/foros/showthread.php?t=96022)

esublim 28-12-2022 00:03:39

Hacer operación matemática con un Label con formatfloat
 
tengo una consulta espero me puedan ayudar.


tengo un label donde los totales se muestran de la siguiente manea:
Código Delphi [-]
Principal.sub_t.Text:= FloatToStrF( total_fdesc, ffNumber, 8, 2 );
eso me arroja por ejemplo el numero 1.214,15
necesito que se muestre asi tan cual esta con las comas (,) y puntos (.). hasta aqui todo excelente.

el problema esta que cuando quiero tomar el label y usarlo para una operacion me dice que no es un valor float.
quiero poder usar el label en una operacion o simplemente mostra el contenido de ese lavel solo con la coma(,) en otro label sin dejar de mostrarlo asi como esta.

en otras palabras necesito tomar esto 1.214,15 y convertirlo en 1214,15 para usarlo en una operacion. tomandolo del label

pgranados 28-12-2022 00:20:05

Cita:

Empezado por esublim (Mensaje 549692)
tengo una consulta espero me puedan ayudar.
el problema esta que cuando quiero tomar el label y usarlo para una operacion me dice que no es un valor float.
l

Ok, esta parte esta fallándote porque estas tomando un valor string para realizar operaciones matemáticas.


Código Delphi [-]
Principal.sub_t.Text:= FloatToStrF( total_fdesc, ffNumber, 8, 2 );

Deberías de utilizar
Código Delphi [-]
StrToFloat()

http://www.delphibasics.co.uk/RTL.php?Name=strtofloat

Saludos :rolleyes:

esublim 28-12-2022 00:29:22

hola este codigo lo necesito:
Código Delphi [-]
Principal.sub_t.Text:= FloatToStrF( total_fdesc, ffNumber, 8, 2 );

para mostrar los valores de la siguiente manera 12.315,10


el problema no es ese. por que SI necesito mostrarlo de esa manera con el punto y la coma.

el problema es que despues no encuentro la manera de volverlo a usar convirtiendolo es 12315,10 y podelo usar en una operacion matematica.
en eso es que necesito ayuda.

pgranados 28-12-2022 00:34:58

Para quitarle el formato debes de tener tu valor en float y utilizar TFloatFormat.

Revisa la siguiente info:
http://www.delphibasics.co.uk/RTL.php?Name=TFloatFormat

esublim 28-12-2022 00:49:31

quedo igual con el mismo error
Código Delphi [-]
Principal.sub_t.Text:= FloatToStrF( total_fdesc, ffNumber, 8, 2 );

como hago para poner a Principal.sub_t.Text como float?

Código Delphi [-]
resultadobs:=strtofloat(Principal.sub_t.Text);
ShowMessage('Number 6,0 = '+FloatToStrF(resultadobs, ffNumber, 6, 0));
me sigue diciendo que Principal.sub_t.Text no es un numero float

esublim 28-12-2022 01:06:16

bueno no se sie es la manera correcta pero solucione asi:
Código Delphi [-]
str:= StringReplace(totalbs.Text, '.', '', [rfReplaceAll, rfIgnoreCase]);
resultadobs:= strtofloat(str);
rest_bs.Text:= floattostr(resultadobs-f)

Neftali [Germán.Estévez] 28-12-2022 09:17:06

Port favor [esublim] revisa la Guía de estilo de los foros y utiliza TAG's cuando añadas código a los mensajes.

kuan-yiu 28-12-2022 09:20:54

Estás mostrando un float en una label, o sea como texto (dejó de ser un float), lo que puedes decidir es el formato de representación de ese float.
La función FloatToStrF tiene varios formatos de representación, pero si ninguno de ellos se ajusta a lo que necesitas puedes hacerlo tú directamente.

Te sugiero usar otro componente para mostrar el dato que te permita un mayor control.
Yo te recomiendo un tCurrencyEdit que tiene una propiedad value por la que accedes directamente al dato como float y una propiedad displayFormat con la que defines el aspecto visual (separador decimal, de millar, signo, moneda...)

duilioisola 28-12-2022 10:02:11

Yo lo que te recomiendo es tener siempre disponible el valor en formato Float.
Luego lo utilizas en el label y en el calculo partiendo de el.

Código Delphi [-]
unit UEjemplo

interfase

uses ...

type 
  TFMEjemplo = class(TForm)
    [...]
  private
    Total : double;
    [...]
  end;

    [...]

procedure TFMEjemplo.Create();
begin
  Total := 0;
end;

procedure TFMEjemplo.CalculaTotal;
begin
  Total := ObtenerTotal();
end;

procedure TFMEjemplo.MuestraTotal;
begin
  sub_t.Text:= FloatToStrF( Total , ffNumber, 8, 2 );
end;

function TFMEjemplo.DevuelveDobleDeTotal : double;
begin
  Result := Total * 2;
end;

escafandra 28-12-2022 22:14:02

Lo ideal es que manejes el número or un lado y su representación por otro. Es tal cual te expone [duilioisola].
Si por algún motivo necesitas convertir de texto a número tendrás que eluminar el formato. para tu caso mira este código que hace ambas cosas:


Código Delphi [-]
var
  F1, F2: Extended;
  S1, S2: String;
begin
  F1:= 1214.15;
  S1:= FloatToStrF(F1, ffNumber, 8, 2 );            // Muestra  1.214,15
  S2:=  StringReplace(S1, '.', '', [rfReplaceAll]); // Ahora    1214,15
  F2:= StrToFloat(S2);                              // F2 = 1214.15
end;




Saludos.


La franja horaria es GMT +2. Ahora son las 11:05:09.

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