Operações com Real Types ...

Delphi

04/06/2004

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

Curtidas 0

Respostas

Xisto

Xisto

04/06/2004

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


GOSTEI 0
Marcos Jk

Marcos Jk

04/06/2004

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 ..


GOSTEI 0
Tatuweb

Tatuweb

04/06/2004

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.


GOSTEI 0
Xisto

Xisto

04/06/2004

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.


GOSTEI 0
POSTAR