Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema con decimales largos (https://www.clubdelphi.com/foros/showthread.php?t=88561)

darkbits 23-06-2015 21:26:22

problema con decimales largos
 
un saludo al todo club

tengo un problema grande con decimales grandes
realizo esta operación donde esta celda tiene como valor 1.200,00
Código Delphi [-]
var restar:real;

resta2:=strtofloat(StringGrid1.Cells[6,stringGrid1.Row]);

y cuando pasa por esa linea me arroja este mensaje
Cita:

Proyect chop.exe raised exception class EconvertError with message "1.200,00" is no valid floatng point value
con valores < 999,00 funciona perfectamente

el problema es cuando el decimal es > 1.000,00

porfavor me ayudan a solucionar

ralf8727 23-06-2015 21:35:27

el problema es que 1.200,00 no es float es un numero compuesto estas separando los miles con un .(punto) tienes que poner los miles juntos osea 1200.00 como es que pasas el 1.200,00 al string

darkbits 23-06-2015 22:02:00

como lo convierto 1.200,00 a 1200,00 ?

ralf8727 23-06-2015 22:07:34

Cita:

Empezado por darkbits (Mensaje 493608)
como lo convierto 1.200,00 a 1200,00 ?


como llenas el StringGrid1

darkbits 23-06-2015 22:15:55

por tema de estética lo lleno así:

Código Delphi [-]
  StringGrid1.Cells[6,StringGrid1.Tag] := FormatFloat('#,##0.00',strtofloat(ventaBs.text));   // 1.200,00

esos 1.200,00 quiero multiplicar con otro valor entero.
y ahi se me presenta el problema mencionado arriba.

como lo convierto 1200,00 ?

ralf8727 23-06-2015 22:23:56

Código Delphi [-]
var
restar:real;
 s:string;
begin
// S :=StringGrid1.Cells[6,stringGrid1.Row];

s:=edit1.Text;
while Pos('.', S) > 0 do
begin
    Delete(S, Pos('.', S),1);
   s:=s;//strtofloat(S);
end;

s := StringReplace(s, ',', '.',[rfReplaceAll, rfIgnoreCase]);

Label1.Caption:=s;

Label2.Caption:= FloatToStr( StrToFloat(s)-100);


end;

esete codigo te podria funcionar pero si estas tomando informacion de un edit puedes poner el valor como se requiere.

ecfisa 23-06-2015 22:25:32

Hola darkbits.

Otra opción:
Código Delphi [-]
var
  resta: Single;
begin
  resta := StrToFloat(StringReplace(StringGrid1.Cells[6,stringGrid1.Row] ,ThousandSeparator, '', [rfReplaceAll]));
...

Saludos :)

darkbits 24-06-2015 00:13:51

que es ?

ThousandSeparator

AgustinOrtu 24-06-2015 00:17:49

Por responder desde el teléfono no tengo delphi a mano para probar, pero no se puede indicar el formato en la función StrToFloat?

Yo uso StrToCurr pasando formato de moneda y no tuve nunca problemas con en punto. Por lo menos anda bien en windows xp, 7, server 2008 y windows 10 preview, usando delphi 2010

AgustinOrtu 24-06-2015 00:20:50

Cita:

Empezado por darkbits (Mensaje 493614)
que es ?

ThousandSeparator


Separador de miles. Ejemplo si ThousandSeparator es '.'

1.200 > mil doscientos

Si fuera ','

1,200 > también mil doscientos

Si esta en blanco

1200 > mil doscientos

Tanto ese separador como el DecimalSeparator van de la mano digamos

Podes modificarlos desde delphi sin problema

nlsgarcia 24-06-2015 01:01:39

darkbits,

Cita:

Empezado por darkbits
...¿Que es ThousandSeparator?...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

ralf8727 24-06-2015 01:21:36

Cita:

Empezado por AgustinOrtu (Mensaje 493615)
Por responder desde el teléfono no tengo delphi a mano para probar, pero no se puede indicar el formato en la función StrToFloat?

Yo uso StrToCurr pasando formato de moneda y no tuve nunca problemas con en punto. Por lo menos anda bien en windows xp, 7, server 2008 y windows 10 preview, usando delphi 2010


no lo puedes convertir directamente porque tiene dos caracteres separadores el punto y la coma o por lo menos no directamente.

o a menos que lo este intentando mal?

edit1.Text:='1.200,00';
Label1.Caption:=CurrToStr(StrToCurr(Edit1.Text ));


La franja horaria es GMT +2. Ahora son las 15:17:12.

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