Operações com Real Types ...
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 ..
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
Curtidas 0
Respostas
Xisto
04/06/2004
soma:=strtofloat(formatfloat(´#0.00´,soma));
GOSTEI 0
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 ..
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
04/06/2004
Esperimente usar a função abaixo. Não se esqueça de declarar a unit Math na seção uses.
Chame assim
PS: Use ponto e não virgula como separador decimal. Tem que usar 4.19999. Se usar 4,19999 vai dar erro.
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
04/06/2004
Caríssimo [b:9c982f8ef1]Marcos JK[/b:9c982f8ef1],
testei assim
sendo edit1.text := 420 por exemplo
funcionou...
uso Delphi 6, mas nao sei se isto faz qqer diferenca.
Espero ter ajudado.
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