![]() |
Problem: 'ungültige Gleitkommaoperation'
Hallo liebe Community,
Dies ist mein erster Post hier, also lasst bitte Nachsicht walten :). Ich bin leider noch ein ziemlicher Anfänger bei Delphi und stehe nun vor meinem ersten "schier unlösbaren Problem". Und zwar bin ich gerade dabei einen simplen Gleichungslöser für quadratische Gleichungen der allgemeinen Form 0=ax²+bx+c zu basteln (a ungleich 0). Dabei soll mir das Programm die Lösungsformel für quadr. Gleichungen ( (-p/2)+-Wurzel((p/2)²-q) ) benutzen und die zwei Ergebnisse (x1; x2) in zwei separaten Edit-Feldern ausgeben. Delphi sagt mir in meinem Quellcode seien keine Fehler enthalten, dennoch erscheint, wenn ich das Programm starte und Werte eingebe folgende Fehlermeldung: Exception-Klasse EInvalid OP mit Meldung 'ungültige Gleitkommaoperation' Hier ist mein Quellcode:
Delphi-Quellcode:
Woran könnte das liegen?, bzw. welchen Fehler habe ich gemacht?
procedure TForm3.Button2Click(Sender: TObject);
var a,b,c,d,f:real; begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); c:=strtofloat(edit3.text); d:=((b/a)/2)+sqrt(((b/a)/2)*((b/a)/2)-c/a); Edit4.Text:=FloatToStr(d); f:=((b/a)/2)-sqrt(((b/a)/2)*((b/a)/2)-c/a); Edit5.Text:=FloatToStr(f); end; Ich danke euch schon einmal im Voraus für jede Antwort! |
AW: Problem: 'ungültige Gleitkommaoperation'
Du solltest überprüfen ob a=0 und gegf. eine Meldung ausgeben ohne zu rechnen
Du solltest vor Wurzeln ziehst prüfen ob die Zahl negativ ist und s.o. |
AW: Problem: 'ungültige Gleitkommaoperation'
Hallo und Willkommen in der DP :dp:,
könnte es sein, dass Zitat:
|
AW: Problem: 'ungültige Gleitkommaoperation'
Zitat:
|
AW: Problem: 'ungültige Gleitkommaoperation'
Es ergibt sich nicht immer ein Fehler, aber z. B. hier
Delphi-Quellcode:
Gekürzt
d:=((8/5)/2)+sqrt(((8/5)/2)*((8/5)/2)-4/5);
Delphi-Quellcode:
Und das klappt nicht
d:=((8/5)/2)+sqrt(0);
Delphi-Quellcode:
sqrt(0)
|
AW: Problem: 'ungültige Gleitkommaoperation'
@Popov
sorry, aber Quark SQRT(0) ist kein Problem, SQRT(-0.16) ,korrekt "gekürzt", schon |
AW: Problem: 'ungültige Gleitkommaoperation'
Hast Recht, der Fehler tritt zwei mal auf. Hab die zweite Meldung der ersten Formel zugeordnet.
|
AW: Problem: 'ungültige Gleitkommaoperation'
Warum ziehst nicht einfach eine komplexe Wurzel?
|
AW: Problem: 'ungültige Gleitkommaoperation'
Vielen Dank, für die zahlreichen Antworten!
Nun, wie kann ich denn dem Progi "sagen", dass es hier bei Negativen Werten, beispielsweise sqrt(-4), eine Meldung mit 'Nicht lösbar' ausgibt ? Mit einem "If-Then-Befehl"? |
AW: Problem: 'ungültige Gleitkommaoperation'
Ich tendiere immer dazu alles vorher zu überprüfen, da ich keine Überraschungen mag. Also wie ich es machen würde, wahrscheinlich kompliziert.
Alternativ kannst du die Rechnung in ein Try-Except-End Block packen. Gibt es einen Fehler, wird der Teil in Except ausgeführt. Aber mal gucken was die anderen vorschlagen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz