Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2022
esublim esublim is offline
Miembro
 
Registrado: dic 2022
Posts: 40
Poder: 0
esublim Va por buen camino
Question 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

Última edición por Neftali [Germán.Estévez] fecha: 28-12-2022 a las 09:18:24. Razón: Añadir TAG's al código Delphi
Responder Con Cita
  #2  
Antiguo 28-12-2022
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Cita:
Empezado por esublim Ver Mensaje
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
Responder Con Cita
  #3  
Antiguo 28-12-2022
esublim esublim is offline
Miembro
 
Registrado: dic 2022
Posts: 40
Poder: 0
esublim Va por buen camino
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.

Última edición por Neftali [Germán.Estévez] fecha: 28-12-2022 a las 09:18:04. Razón: Añadir TAG's al código Delphi
Responder Con Cita
  #4  
Antiguo 28-12-2022
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 28-12-2022
esublim esublim is offline
Miembro
 
Registrado: dic 2022
Posts: 40
Poder: 0
esublim Va por buen camino
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

Última edición por Neftali [Germán.Estévez] fecha: 28-12-2022 a las 09:17:50. Razón: Añadir TAG's al código Delphi
Responder Con Cita
  #6  
Antiguo 28-12-2022
esublim esublim is offline
Miembro
 
Registrado: dic 2022
Posts: 40
Poder: 0
esublim Va por buen camino
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)

Última edición por Neftali [Germán.Estévez] fecha: 28-12-2022 a las 09:17:35. Razón: Añadir TAG's al código Delphi
Responder Con Cita
  #7  
Antiguo 28-12-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Port favor [esublim] revisa la Guía de estilo de los foros y utiliza TAG's cuando añadas código a los mensajes.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 28-12-2022
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
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...)
Responder Con Cita
  #9  
Antiguo 28-12-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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;
Responder Con Cita
  #10  
Antiguo 28-12-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FormatFloat mjjj Varios 3 10-06-2008 20:35:39
Hacer titilar un label eyscom Varios 22 18-01-2007 21:18:21
Problema con operacion matematica y duda jandres Varios 1 04-07-2006 19:35:23
en que evento del dbgrid puedo hacer un operacion matematica . . . Shidalis Varios 13 26-08-2005 22:25:06


La franja horaria es GMT +2. Ahora son las 01:33:33.


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
Copyright 1996-2007 Club Delphi