Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
eddye

Formatar String Com Float

Recommended Posts

estou tentando fazer uma calculadora em delphi e não consegui fazer a parte de multiplicação com numeros decimais (2*0,002), porque eu sempre tenho que especificar qtas casas depois da virgula ele ira mostrar, se eu especificar pra um determinado numero, e o numero for outro, tera mais 0's antes da virgula ou depois ficando por ex: 0,00200 (sendo q o numero numa calculadora normal é

0,002..então, teria como deixar o ponto flutuante "automatico"?? Por exemplo, se precisasse de 4 casas apos a virgula ele colocaria as 4 casas, somente o necessario..

estou usando esse comando:

var temp:real;

begin

temp:=2*0.002;

form1.caption:=(Format ('%4.4f',[temp]));

end;

então minha duvida é se tem algum jeito de não especificar o numero de casas apos a virgula (se eu deixo em branco %f... fica somente com 2 casas o que não ajuda porque o numero a ser multiplicado ira variar).

obrigado

[]'s eddye

:help:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica. Nunca use variáveis do tipo Real. Prefira sempre usar Single, Double e Extended para ponto flutuante. São mais rápidos e melhores.

Não entendi. Quando você diz para o Format usar 4.4f, o 2*0,002 seria exibido como 0,0040 (4 casas decimais). O primeiro número que está esquisito. É sempre bom você usar 2 valores a mais, pois no mínimo você tem o . e a unidade, então use 6.4f, 8.6f, 11.9f, etc e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou utilizar o single no lugar do real..o que eu quero fazer é o seguinte: se você usar a calculadora do windows e fazer 2/0,001 vai dar 2000. No meu programa em delphi se você usa isso ele vai resultar 2000,00...então não teria como fazer o delphi ignorar esses 0's apos a virgula e calcular o valor exato?

Muito obrigado

[]'s eddye :ph34r:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eddye, acho que o que você pode fazer é o seguinte.

Não defina o número de casas decimais no Format. Use apenas %f. Mas use um:

if Frac(x)=0 then

para descobrir se o número é um valor inteiro. Neste caso você usa um %d, caso contrário (else), você usa o %f.

Deve funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×