 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Qui Mai 29, 2014 11:42 pm Assunto: Formatar casas decimais - [Resolvido] |
|
|
Eu de novo outra vez!
Como faço pra formatar um valor corretamente: "Independente o numero de casas decimais". Fiz de varias formas, no final usei este abaixno mais nao me deixou contente. Me dê uma ajudinha.
Segui um exemplo.
| Código: | cdsvenda.fieldbyname('acrescimo').AsString := FormatFloat('###0.00',(StrToFloat(edtacrdesc.Text)));
edtVLTotal.Text := FormatFloat('###0.00',(StrToFloat(edttotal.Text)));
|
Geralmente os valores estao ficando assim 3454,00 _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/
Editado pela última vez por rique_neves em Ter Jun 03, 2014 12:01 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Sex Mai 30, 2014 8:26 am Assunto: |
|
|
mas vc quer formatar como? dê mais exemplos
se vc usar assim: ###0.00#### ira aparecer mais decimais, caso tenham _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
ediat12 Novato

Registrado: Sábado, 15 de Setembro de 2012 Mensagens: 66
|
Enviada: Sex Mai 30, 2014 8:29 am Assunto: |
|
|
Seja mais claro como vc quer esse valor formatado.
FormatFloat('##,##0.00', valor);
No exemplo acima ficará algo assim 1.560,00 ou 12.543,00 ou 120.435,00
Testa ai e vê se te contenta isso, caso não, mostre como gostaria da formatação com exemplos, que dai fica mais fácil ajudar.
Só uma observação, isso ai é fácil em um DBEdit caso seja MaskEdit é complicado, pois ele vai limitar seu valor no tamanho da máscara. |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Sex Mai 30, 2014 10:10 pm Assunto: |
|
|
| joemil escreveu: | mas vc quer formatar como? dê mais exemplos
se vc usar assim: ###0.00#### ira aparecer mais decimais, caso tenham |
Esta maneira que voce me passou está fazendo praticamente igual ao que eu faço hoje. Não curti.
No seu caso si o valor for R$ 3,400.00, está formatando assim R$ 3400,00 sem a virgula, quero inserir os pontos e as vírgulas quando for acima de 3 casas decimais. _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Sex Mai 30, 2014 10:18 pm Assunto: |
|
|
| ediat12 escreveu: | Seja mais claro como vc quer esse valor formatado.
FormatFloat('##,##0.00', valor);
No exemplo acima ficará algo assim 1.560,00 ou 12.543,00 ou 120.435,00
Testa ai e vê se te contenta isso, caso não, mostre como gostaria da formatação com exemplos, que dai fica mais fácil ajudar.
Só uma observação, isso ai é fácil em um DBEdit caso seja MaskEdit é complicado, pois ele vai limitar seu valor no tamanho da máscara. |
Já no teu caso, nao consigo somar os valores quando passa de 3 casas , tipo.:
Si for R$ 1,600.00 ao acrescentar qualquer valor tipo R$ 69,00.
Retorna erro : EconvertError with message "1.600,00" is not a valid floating point value _________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
ediat12 Novato

Registrado: Sábado, 15 de Setembro de 2012 Mensagens: 66
|
Enviada: Dom Jun 01, 2014 11:42 am Assunto: |
|
|
| Sim realmente ele não vai deixar somar o valor devido o ponto na casa milenar, nesse caso, a única solução que eu faria é, limpar a pontuação dos valores nos quais quero somar e depois aplicar a máscara novamente, ou se deixar formatado da forma 1230,80 << nesse caso pode somar normalmente. |
|
| Voltar ao Topo |
|
 |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Seg Jun 02, 2014 11:59 pm Assunto: Resolvido |
|
|
| ediat12 escreveu: | | Sim realmente ele não vai deixar somar o valor devido o ponto na casa milenar, nesse caso, a única solução que eu faria é, limpar a pontuação dos valores nos quais quero somar e depois aplicar a máscara novamente, ou se deixar formatado da forma 1230,80 << nesse caso pode somar normalmente. |
Perdão pela demora, ocupado ...
Mas era algo bem simples não estava conseguindo resolver.
Resolvi usar StringReplace.
Consegui resolver.. Obrigado a todos pelo empenho em ajudar.
| Código: | val1 := edttotal.Text;
val2 := edtVLTotal.Text;
val1novo := trim(StringReplace(val1,',','',[rfReplaceall]));
val1novo := trim(StringReplace(val1,'.','',[rfReplaceall]));
val2novo := trim(StringReplace(val2,',','',[rfReplaceall]));
val2novo := trim(StringReplace(val2,'.','',[rfReplaceall]));
val3total := FloatToStr(StrToFloat(val1novo) + StrToFloat(val2novo));
edtVLTotal.Text := FormatFloat('##,##0.00',(StrToFloat(val3total))); |
_________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|