Código
- Coloque no Form um componente Edit com o nome de "Edit1".
- Coloque no Form um componente Button com o nome de "Button1".
Agora Click no botão e escreva o evento abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
A,B,C: Double;
begin
A:= 63.6;
B:= 1;
C:= 64.6;
if C = (A + B) then
Edit1.Text:= '63.6 + 1 = 64.6. O Delphi entendeu que SIM, a comparação.'
else
Edit1.Text:= '63.6 + 1 = 64.6. O Delphi entendeu que NÃO, a comparação.';
end;
Agora rode o programa e click no botão. No edit aparecerá a seguinte mensagem:
'63.6 + 1 = 64.6. O Delphi entendeu que NÃO, a comparação.'
A pergunta é: Como que 63.6 + 1 não é igual a 64.6?
Para esse problema eu burlei o "Delphi ou Pascal" e criei uma função muito simples, na verdade, a mais simples que já escrevi e que me deu o resultado esperado.
function TForm1.Calc_Double_If(Numero: Double): Double;
begin
Calc_Double_If:= Numero;
end;
Vamos arrumar o nosso programa e fazer o teste.
- Declare a função "Calc_Double_If"
...
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
function Calc_Double_If(Numero: Double): Double;
end;
....
- Escreva a função "Calc_Double_If"
...
implementation
{$R *.dfm}
function TForm1.Calc_Double_If(Numero: Double): Double;
begin
Calc_Double_If:= Numero;
end;
....
- Altere o evento OnClick do Button1 como abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
A,B,C: Double;
begin
A:= 63.6;
B:= 1;
C:= 64.6;
if C = Calc_Double_If(A + B) then
Edit1.Text:= '63.6 + 1 = 64.6. O Delphi entendeu que SIM, a comparação.'
else
Edit1.Text:= '63.6 + 1 = 64.6. O Delphi entendeu que NÃO, a comparação.';
end;
Agora rode o programa e click no botão. Adivinha o resultado no edit?
'63.6 + 1 = 64.6. O Delphi entendeu que SIM, a comparação.'
Para não correr risco, nos programas que você tiver qualquer calculo em um "IF" ou em um "Repeat Until", use essa função nos calculos de (Float/Double), em caso de Inteiros use a função abaixo:
function TForm1.Calc_Integer_If(Numero: Integer): Integer;
begin
Calc_Integer_If:= Numero;
end;
Valeu pessoal, e boas tecladas....
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009