[Lazarus-es] Manejo de decimales

Jesus Reyes jesusrmx en yahoo.com.mx
Mar Jul 5 20:22:46 CEST 2011



--- El mar 5-jul-11, Francisco Javier Solis Palma <fsolispa en gmail.com> escribió:

> si el valor es igual a diez (10), no debe de tener valor
> decimal pero si es menor a este número debe de mostrarse
> los decimales incluso el cero
> esto es si la cantidad es nueve (9) debe mostrarse 9.0,
....
>     Begin
>       Entero := Int(sdato);
>       Val:=format('%n', [Entero]);
>       Fraccion := Frac(sdato);
>       If Fraccion <> 0 Then
>         Val := Val + Format('%d',
> [Fraccion])
>       Else
>         Val := Val + Format('%.1d',
> [Fraccion]);
>     end;
>   end;
> end;
> 
> me da un erro que comenta que no se puede pasar el format
> index, como debo dejar el formato en lazreport, al
> compilarlo no me da error solo ala ejecutarlo no entiendo
> por que me da este error si alguien me puede ayudar, de
> antemano gracias

Supongo que el error te lo da en las lineas Format citadas, el formato "%d" esta restringido a números enteros, pero "Fraccion" es double, 

Ademas si entendí bien, para 10 lo debe mostrar sin decimal, menor que 10 con decimal (y mayor que 10?),  usando la técnica que te comentó José una vez que sabes que es 10 simplemente regresa: val := '10' no es necesario convertir, para los otros números es mas fácil usar una funcion especifica para formatear números: val := FormatFloat('0.0',sDato), esto te asegura que cualquier otro número será formateado con un decimal, si necesitas mas decimales simplemente usa val := FormatFloat('0.00',sDato); etc. Para mas opciones de formatfloat ve http://www.freepascal.org/docs-html/rtl/sysutils/formatfloat.html

Jesus Reyes A.




More information about the Lazarus-es mailing list