Fórum Não apresenta erro de divisão por zero. #500400
06/11/2014
0
try
wsComFim := ((wsQtdIni * wsComIni) - (wsQtdSai * wsComEnt)) / (wsQtdIni - wsQtdSai);
wsSemFim := ((wsQtdIni * wsSemIni) - (wsQtdSai * wsSemEnt)) / (wsQtdIni - wsQtdSai);
except
wsComFim := 123;
wsSemFim := 124;
end;
O valor de (wsQtdIni - wsQtdSai) é 0 (zero)
Logo isso deveria causar uma exceção e cair na linha do Except.
Porem ao invés disso o valor das variáveis wsComFim = -INF
Alguém sabe o que pode ser isso ????
[img]http://arquivo.devmedia.com.br/forum/imagem/70295-20141106-181411.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/70295-20141106-181428%20%281%29.png[/img]
Pa Informatica
Curtir tópico
+ 0Posts
07/11/2014
Cleverson
Gostei + 0
07/11/2014
Claudio Ferreira
Troque o tipo de wsComFim para integer e / por div e vai cair na exceção
Gostei + 0
08/11/2014
Pa Informatica
Gostei + 0
08/11/2014
Pa Informatica
Gostei + 0
08/11/2014
Pa Informatica
Gostei + 0
08/11/2014
Pa Informatica
Troque o tipo de wsComFim para integer e / por div e vai cair na exceção
O valor é realmente 0 (zero) o proprio hint mostra.
Gostei + 0
09/11/2014
Marcos Saffran
criei um programa para verificar o que está ocorrendo e, para meu espando, o cálculo de uma divisão de dois números não é feito, o programa simplesmente pula a linha de comando.
Portanto busquei na internet e encontrei o seguinte: Evitando erro
envio abaixo o programa para sua análise.
procedure TForm1.Button1Click(Sender: TObject);
var
x, y : Integer;
resultado : double;
begin
try
x := 10;
y := 0;
resultado := x / y; // o programa pula essa linha (não sei porque)
resultado := Calc_Double_If(x / y);
showmessage('try - resultado = ' + FloatToStr(x / y));
except
showmessage('except');
end;
end;
function TForm1.Calc_Double_If(Numero: Double): Double;
begin
Calc_Double_If:= Numero;
end;
end.
Espero que nossos amigos do DevMedia possam explicar o ocorrido.
Gostei + 0
09/11/2014
Raylan Zibel
Gostei + 0
09/11/2014
Marcos Saffran
resultado := x / y; // o programa pula essa linha (não sei porque)
o erro ocorre na linha abaixo.
Gostei + 0
10/11/2014
Pa Informatica
O estranho é que no delphi 7 ele apresenta o erro de divisão por zero.
Gostei + 0
10/11/2014
Claudio Ferreira
Troque o tipo de wsComFim para integer e / por div e vai cair na exceção
O valor é realmente 0 (zero) o proprio hint mostra.
Não é zero, o Hint arredonda para mostrar. Mas o real conteúdo voce não vê.
Gostei + 0
13/11/2014
Pa Informatica
De onde saiu isso ?
Gostei + 0
17/11/2014
Claudio Ferreira
só sei que se voce transformar para Integer vai soltar a exceção de divisão por zero, coloque o Trunc para converter para inteiro, assim :
/ Trunc (wsQtdIni - wsQtdSai);
Gostei + 0
22/11/2014
Pa Informatica
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsfinitefloat_xml.html
Agora já sei o que esta ocorrendo mas não sei como corrigir.
Tentei colocar a diretiva {$FINITEFLOAT ON} em diversos lugares mais nada funciona.
Se alguém tiver uma luz agradeço
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)