Fórum Operações com Real Types ... #236271

04/06/2004

0

Tenho o seguinte Problema:

soma : Single;
valtrib : Single;

na operação: soma := soma + ValTrib/100;

O Conteudo de Valtrib é 687
e de some é: 6,8899998665 e eu queria que fosse 6,87
o que posso fazer para que obtenha esse valor?
Já mudei o tipo da variável, etc ..


Marcos Jk

Marcos Jk

Responder

Posts

04/06/2004

Xisto

soma:=strtofloat(formatfloat(´#0.00´,soma));


Responder

Gostei + 0

07/06/2004

Marcos Jk

Ok, Obrigado Xisto Funcionou para o número acima, porém
quando divido 420 (em outra passagem) por 100, mesmo utilizando esta função na depuração a variável está com o valor 4,1999998093.

Desculpe, sou programador novo (iniciando) em delphi, mas quando programava em cobol ( nos anos 90..) definia uma variável com 2 ou tres, quatro... casas decimais e pronto, era so calcular. Vejo que no delplhi e um pouco diferente ... nao entendo porem pque 420 nao resulta em 4,20. Ja pesquisei em varios livros de pascal, delphi mas nao achei nada mais aprofundado sobre operacoes aritmeticas ..

se alguem tiver algum link ou material sobre o assunto e puder dar um toque, desde ja agradeco ..


Responder

Gostei + 0

08/06/2004

Tatuweb

Esperimente usar a função abaixo. Não se esqueça de declarar a unit Math na seção uses.

uses Math;

function EspRound (Number: Double; Digits: Byte): Double;
var
  n_swap: Extended;
begin
  n_swap := Power (10, Digits);
  Number := Number * n_swap;
  Number := Round (Number);
  Result := Number/n_swap;
end;

Chame assim
EspRound (4.1999998093, 2)

PS: Use ponto e não virgula como separador decimal. Tem que usar 4.19999. Se usar 4,19999 vai dar erro.


Responder

Gostei + 0

08/06/2004

Xisto

Caríssimo [b:9c982f8ef1]Marcos JK[/b:9c982f8ef1],
testei assim

  Label2.Caption :=
    formatfloat(´#0.00´,StrToFloat(edit1.Text)/100);


sendo edit1.text := 420 por exemplo
funcionou...
uso Delphi 6, mas nao sei se isto faz qqer diferenca.
Espero ter ajudado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar