Invalid floating point operation

0

Witam
Mam problem w delphi chcę podzielić a/b(string) więc napisałem taki kod

  x:=strtofloat(edit1.text);
y:=strtofloat(edit2.text);
wynik:=x/y;
label3.caption:= floattostr(wynik);

I program wyświetla błąd Invalid floating point operation wskazując na błędną ostatnią linijkę kodu, co jest źle??

0

podaj co jest w edit1 i edit2
jakimi zmiennymi sa x,y i wynik...

0

X,Y,WYNIK to zmienne typu extended, a edit1 i edit2 to pole do wpisania tych liczb z zakładki standart>edit(stdctrls)

0

na 99% edit2 ma wpisane 0

0

Hallo!

Misiekd napisał(a)

na 99% edit2 ma wpisane 0

Wtedy na 100% problem wystapilby o jedna linijke kodu wczesniej.

;-)

Pozdrawiam

0

Jakby miał 0 wpisane w Edit2 to by miał błąd:

Project Project1.exe raised exception class EZeroDivide with message 'Floating point division by zero'. Process stopped. Use Step or Run to continue.

var
   x, y, wynik : real;
begin
  x:=strtofloat(edit1.text);
    y:=strtofloat(edit2.text); 
    wynik:=x/y;
  label3.caption:= floattostrF(wynik,fffixed,5,2);
end;
0

Zmieniłem edit2 żeby nie był na początku 0 tylko jeden i działa!! Jednak dziwnie to wygląda że od razu pojawia się 1 w edit2, wolałbym żeby było 0 lub po prostu puste pole(ale wtedy wyświetla błąd is not valid integer value, można ten błąd jakoś ominąć?? Wkleiłem ten kod co napisał RedbaK ale nic to nie pomogło dalej jest Invalid floating point operation.

0

Hallo!

Blad "Invalid floating point operation"</span>:
Wystepuje kiedy oba Edity Edit1.Text (x) i Edit2.Text (y) sa rowne 0. Wtedy dochodzi to tego, ze wykonywana jest proba dzielenia 0 przez 0. O ile sie nie myle wyrazenie "0/0" nazywane jest w matematyce "symbolem nieoznaczonym". Tak wiec nie wiadomo co to jest. Stad "Invalid floating point operation".

Blad "Floating point division by zero":
To chyba jest jasne. Dzielenie przez 0 jest niedopuszczalne.

Konkluzja:
W twoim programmie mozesz spokojnie inicjowac oba pola (Edity) wartoscia 0. Nie powinienes jednak dopuscic do proby dzielenia przez 0, a wszczegolnosci do dzielenia 0 przez 0. Na przyklad przez sprawdzenie przed dzieleniem, czy wprowadzone dane sa poprawne.

Pozdrawiam
Markus

0
Mercel napisał(a)

Witam
Mam problem w delphi chcę podzielić a/b(string) więc napisałem taki kod
x:=strtofloat(edit1.text);
y:=strtofloat(edit2.text);
wynik:=x/y;
label3.caption:= floattostr(wynik);

> I program wyświetla błąd Invalid floating point operation wskazując na błędną ostatnią linijkę kodu, co jest źle??



Obstawiam, że zamiast kropki używasz przecinka albo odwrotnie :D
0

Dzięki wszystkim za szybkie odpowiedzi i za zainteresowanie tematem. Już wszystko działa.
Temat można zamknąć

1 użytkowników online, w tym zalogowanych: 0, gości: 1