Você está na página 1de 2

Como usar a funo FormatFloat() para formatar valores de ponto-flutuante em Delphi A funo FormatFloat() muito til quando queremos

s formatar valores de ponto-flutuante (valores que possuem a parte fracionria) em Delphi. Esta funo recebe um padro de for matao e o valor a ser formatado e retorna uma string. Veja um exemplo no qual form atamos o valor de PI com 2 casas decimais: procedure TForm1.Button1Click(Sender: TObject); var resultado: string; begin // vamos formatar o valor de PI com 2 casas decimais resultado := FormatFloat('#.00', PI); // vamos exibir o resultado ShowMessage(resultado); end; O resultado ser exibido como 3,14. Note que aqui ns informamos o ponto como separa dor decimal. No entanto, o Delphi busca o separador decimal na varivel global Dec imalSeparator, usada para facilitar a internacionalizao, visto que este valor obti do a partir das configuraes regionais do Windows. Para tirar o mximo proveito da funo FormatFloat(), necessrio conhecer os especificad ores de formato: 0 - Marcador de r "0" na string ntrrio, um "0" odemos formatar dgito. Se o valor a ser formatado tiver um dgito na posio ocupada po de formatao, ento este dgito copiado para a string resultante. Do co guardado nesta posio na string resultante. Veja, por exemplo, como p um valor sempre com 5 posies antes da vrgula:

procedure TForm1.Button1Click(Sender: TObject); var valor: double; resultado: string; begin valor := 4.50; // vamos formatar o valor com 5 posies antes da vrgula resultado := FormatFloat('00000.00', valor); // vamos exibir o resultado ShowMessage(resultado); end; # - Marcador de dgito. Se o valor a ser formatado tiver um dgito na posio ocupada po r "0" na string de formatao, ento este dgito copiado para a string resultante. Do co ntrrio, nada guardado nesta posio na string resultante. . - O primeiro caractere "." encontrado na string de formatao determina a posio do s eparador decimal na string resultante. Quaisquer caracteres "." encontrados aps o primeiro "." sero ignorados. O caractere do separador decimal determinado pela v arivel global DecimalSeparator ou seu equivalente TFormatSettings. , - Separador de milhares. Se a string de formatao tiver um ou mais caracteres "." , o resultado ter separadores de milhares entre cada grupo de trs dgitos esquerda d o ponto decimal. A posio e quantidade de "." no afeta o resultado, exceto para info

rmar que os separadores de milhares so necessrios. O caractere do separador decima l determinado pela varivel global ThousandSeparator ou seu equivalente TFormatSet tings. Veja um exemplo no qual exibimos o valor 43765,15 com o separador de milh ar: procedure TForm1.Button1Click(Sender: TObject); var valor: double; resultado: string; begin valor := 43765.15; // vamos formatar o valor usando o separador de milhares resultado := FormatFloat(',.00', valor); // vamos exibir o resultado ShowMessage(resultado); end;

E+ - Notao cientfica. Se qualquer uma das strings 'E+', 'E-', 'e+' ou 'e-' estiver contida na string de formatao, o valor ser formatado usando notao cientfica. Um grupo de at quatro caracteres "0" poder ser inserido aps 'E+', 'E-', 'e+', ou 'e-' para d eterminar o nmero mximo de dgitos no expoente. O 'E+' e 'e+' provocar um sinal de po sitivo para a formatao de nmeros positivos e um sinal de negativo para a formatao de nmeros negativos. O 'E-' e 'e-' provocar um sinal negativo apenas para expoentes n egativos. 'xx'/"xx" - Caracteres em asplas simples ou duplas so exibidos sem formatao. ; - Usado para separar sees para nmeros positivos, negativos e zeros na string de f ormatao. Usamos isso quando queremos que valores positivos, negativos ou zerados s ejam formatados de forma diferente. Veja um ltimo exemplo, desta vez formatando um valor em moeda brasileira (durante a autoria desta dica, a moeda usada reais): procedure TForm1.Button1Click(Sender: TObject); var valor: double; resultado: string; begin valor := 43765.15; // vamos formatar o valor usando o separador de milhares // e a moeda brasileira: reais resultado := FormatFloat('"R$ ",.00', valor); // vamos exibir o resultado ShowMessage(resultado); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.