Fórum Sobre Retorno de Função Double #278348

21/04/2005

0

pessoal tenho uma função que me retorna um double...
depurando, na linha em que a função recebe seu resultado, lhe é atribuido [b:bb94bad1ba]0,0013[/b:bb94bad1ba], porém, qdo volto a execução do procedimento que o chamou, seu resultado é apenas [b:bb94bad1ba]0,001[/b:bb94bad1ba]...


Bruno Belchior

Bruno Belchior

Responder

Posts

21/04/2005

Edilcimar

você não está formatando o número em algum local?


Responder

Gostei + 0

21/04/2005

Yallebr

Não. Veja só está dessa forma:
function Chamada(Valor: Double): Double;
var
  Resultado: Double;
begin
  Resultado := (Valor * 5) / 1000; 
  Result := RoundTo(Resultado, -4); // nesse ponto result recebe 0.0013
end;

procedure Chamador;
var
  Resultado: Double;
begin
  Resultado := 5.0;
  Resultado := Chamada(Resultado);    // nesse ponto Resultado recebe 0.001
end;
ou seja o delphi está suprindo algo, ou estou errado...


Responder

Gostei + 0

21/04/2005

Edilcimar

vc está manipulando result e pegando resultado


Responder

Gostei + 0

21/04/2005

Bruno Belchior

  Resultado := (Valor * 5) / 1000; 
  Result := RoundTo(Resultado, -4); // nesse ponto result recebe 0.0013 
veja bem, aqui eu manipulo o [b:96ca52665a]Resultado[/b:96ca52665a] porém o [b:96ca52665a]Result[/b:96ca52665a] irá recebê-lo...


Responder

Gostei + 0

21/04/2005

Edilcimar

correto, mas fora da função, no retorno, você está pegando quem result ou resultado?


Responder

Gostei + 0

21/04/2005

Bruno Belchior

o [b:9178eabc81]Result[/b:9178eabc81]...


Responder

Gostei + 0

21/04/2005

Edilcimar

vc escreveu
Resultado := Chamada(Resultado); // nesse ponto Resultado recebe 0.001

aqui está resultado e não result


Responder

Gostei + 0

21/04/2005

Bruno Belchior

mas esse resultado é uma variável qualquer que recebe o valor da função... veja nessa forma:
function Chamada(Valor: Double): Double; 
var 
  Resultado: Double; 
begin 
  Resultado := (Valor * 5) / 1000; 
  Result := RoundTo(Resultado, -4); // nesse ponto result recebe 0.0013 
end; 

procedure Chamador; 
var 
  VariaVelQualquer: Double; 
begin 
  Resultado := 5.0; 
  VariaVelQualquer := Chamada(Resultado);    // nesse ponto Resultado recebe 0.001 
end;



Responder

Gostei + 0

21/04/2005

Edilcimar

function Chamada(Valor: Double): Double;
var
Resultado: Double;
begin
Resultado := (Valor * 5) / 1000;
coloque um showmessage
Result := RoundTo(Resultado, -4); // nesse ponto result recebe 0.0013
coloque um showmessage
end;

procedure Chamador;
var
VariaVelQualquer: Double;
begin
Resultado := 5.0;
VariaVelQualquer := Chamada(Resultado); // nesse ponto Resultado recebe 0.001
coloque um showmessage -> aqui você verá que terá o valor de resultado pois você chamou o resultado e não o result
end;


Responder

Gostei + 0

21/04/2005

Bruno Belchior

essa variável resultado não é variável externa mas sim interna de cada procedimento, logo em um não afetará o outro...


Responder

Gostei + 0

21/04/2005

Edilcimar

qual a resposta que vc teve com os showmessage?


Responder

Gostei + 0

21/04/2005

Beppe

Tem coisa muito errada aí, pq (5.0 * 5) / 1000 = 0.025


Responder

Gostei + 0

21/04/2005

Edilcimar

realmente, eu nem tinha feito as contas


Responder

Gostei + 0

21/04/2005

Marco Salles

Tem coisa muito errada aí, pq (5.0 * 5) / 1000 = 0.025


realmente, eu nem tinha feito as contas


Meio estranho ne :P :P :P

Mas efetuando contas ou não , vou dar meu palpite. :arrow: :arrow:

:idea: Acho que uma linha de raciocineo pode ser:

correto, mas fora da função, no retorno, você está pegando quem result ou resultado?


Sobre esta linha de raciocineo , Sugiro ao meu amigo [b:08567c9f27]brunovicenteb[/b:08567c9f27]
Que faça um Teste e Post o Resultado Para Nos

O teste e o seguinte , de um [b:08567c9f27]<CTRL F9>[/b:08567c9f27] no seu codigo.. Diga-se alguma das linhas de seu codigo , ficaram sem compilar

Compilar que eu me refiro e aquelas bolinhas [color=blue:08567c9f27]azuizinhas[/color:08567c9f27] que aparece no lado Esquero do código


Responder

Gostei + 0

25/04/2005

Bruno Belchior

Tem coisa muito errada aí, pq (5.0 * 5) / 1000 = 0.025
qto a isso ai, é apenas um exemplo, realmente os valores não são esses, tive de depurar o código e me surpreendi, pq no outro dia, simplesmente funcionou!!!. :?: :?: :?:


Responder

Gostei + 0

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

Aceitar