Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Suma de datos sin eliminar ceros (https://www.clubdelphi.com/foros/showthread.php?t=73631)

gdlrinfo 06-05-2011 00:37:40

Suma de datos sin eliminar ceros
 
Hola amigos tengo el siguiente problema estoy haciendo un programa de pagos el cual exigen que los numeros esten dispuestos solo de una manera esta es 8 enteros y dos decimales obligatorios mi problema es el siguiente el numero seria asi 22.123.123,00 el problema que tengo es que al sumar por ejemplo 11.111.111,00 + 11.111.111,90 me quita el cero del decimal es decir me deja 22.222.222,9 y necesito que me deje el cero por la estructura que lleva el reporte alguna idea ? desde ya muchas gracias y espero su respuestas gracias

Casimiro Notevi 06-05-2011 01:07:41

Explicas poca cosa, pero lo normal es que pongas una máscara apropiada, algo así como: '#,##0.00'

oscarac 06-05-2011 03:28:45

tampoco indicas en que componente ira la suma si usaras un tEdit o un Label

si pusieras mas datos alguien podria darte una mano

gdlrinfo 09-05-2011 00:54:59

Hola nuevamente
 
Que tal amigos disculpen si no me exprese bien los datos se muestran en un label nose que otro dato necesitan yo ya quise usar ese tipo de mascara que me comentaban antes pero no me funciono gracias y espero su respuesta

gdlrinfo 09-05-2011 01:16:28

Cita:

Empezado por Casimiro Notevi (Mensaje 399114)
Explicas poca cosa, pero lo normal es que pongas una máscara apropiada, algo así como: '#,##0.00'

Que tal Casimiro en verdad nose que mas necesitas saber quiza me exprese mal lo que yo quiero es que al sumarse los dos numero no me quite el cero del decimal pongo un ejemplo para que sea mas practico y desde ya muchas gracias
Código Delphi [-]
function StrToFloat_Universal( pText : string ): Extended; const    EUROPEAN_ST = ',';
 AMERICAN_ST = '.'; var   lformatSettings : TFormatSettings;
 lFinalValue     : string;
 //lAmStDecimalPos : integer;
 lIndx           : Byte;
 lIsAmerican     : Boolean;
 lIsEuropean     : Boolean;
 begin   lIsAmerican := False;
    lIsEuropean := False;
     for lIndx := Length( pText ) - 1 downto 0 do
     begin
     if ( pText[ lIndx ] = AMERICAN_ST ) then
     begin
     lIsAmerican := True;
     pText := StringReplace( pText, ',', '', [ rfIgnoreCase, rfReplaceAll ]);
     //get rid of thousand incidental separators
      Break;
      end;
      if ( pText[ lIndx ] = EUROPEAN_ST ) then
      begin
      lIsEuropean := True;
      pText := StringReplace( pText, '.', '', [ rfIgnoreCase, rfReplaceAll ]);  //get rid of thousand incidental separators
      Break;     end;   end;   GetLocaleFormatSettings( LOCALE_SYSTEM_DEFAULT, lformatSettings );
      if ( lformatSettings.DecimalSeparator = EUROPEAN_ST ) then
      begin
      if lIsAmerican then
      begin
      lFinalValue := StringReplace( pText, '.', ',', [ rfIgnoreCase, rfReplaceAll ] );
      end;
      end;
      if ( lformatSettings.DecimalSeparator = AMERICAN_ST ) then
      begin
      if lIsEuropean then
      begin
      lFinalValue := StringReplace( pText, ',', '.', [ rfIgnoreCase, rfReplaceAll ] );
      end;
      end;
      pText  := lFinalValue;   Result := StrToFloat( pText, lformatSettings );
      end;
procedure TForm1.Button1Click(Sender: TObject);
var
N1:Real;
Begin
N1:= StrToFloat_Universal (Edit1.Text);
N1:= N1 + StrToFloat_Universal( Edit2.text);
Label1.Caption:= FloatToStr(N1);
end;
end.

Aqui uso esa funcion porque es la unica que me permitia sumar dos numeros del tipo 00,000,000.00 Gracias

Caral 09-05-2011 01:23:52

Hola
Código Delphi [-]
var a :Real;
     b :String;
begin
   b := FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));
   a:= StrToFloat(b);
   Label1.Caption := FormatFloat('###.00', a);
end;
Saludos


La franja horaria es GMT +2. Ahora son las 13:26:36.

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