Hallo ,
Ich möchte eine division ausführen und der nenner soll ungleich 0 sein ..weil sonst stürtzt das programm ab ?
wie kann ich das programm schreiben ??
das programm sieht so aus :
Test1:=(ausgabe/nenner);
Result:=(remain/Test1 );
Danke im vorraus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Du musst natürlich auf >0 überprüfen, damit die Division bei allem Durchgeführt wird was größer als 0 ist.
Wenn dein Nenner nun 0 ist könntest du mittels ELSE darauf reagieren und ggf. etwas anderes rechnen oder
eine Fehlermeldung ausgeben.
MfG
Marcel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Matze001 hat geschrieben:
genau.
Du musst natürlich auf >0 überprüfen, damit die Division bei allem Durchgeführt wird was größer als 0 ist.
Wenn dein Nenner nun 0 ist könntest du mittels ELSE darauf reagieren und ggf. etwas anderes rechnen oder
eine Fehlermeldung ausgeben.
MfG
Marcel
Danke Marcel !
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich verstehe nicht wie 0.5 kleiner null ist ??? an sonsten bei mir ist sowieso nicht der fall ich habe nur ganzzahlige werte !
es stimmt aber bei 0.0000001 wird die division ausgeführt weil die bedingung erfüllt ist
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2010-10-05
Originally created by: ebt'ler
Wieso vergleich Ihr nicht auf Ungleich, also mit "<>"?
Negative Zahlen müssen doch auch zugelassen sein.
Vielleicht wäre auch folgendes interessant:
Zitat:
Wenn Sie in Ihrem Projekt Funktionen mit Namen CheckDivByte, CheckDivWord,
CheckDivDWord und CheckDivReal definieren, können Sie damit bei Verwendung des Operators
DIV den Wert des Divisors überprüfen, beispielsweise um eine Division durch 0 zu verhindern. Der
Name der Funktion ist festgelegt und darf nur diese Bezeichnung besitzen.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Die CheckDiv Funktionen sollten nur zu Testzwecken eingebaut sein,
wenn die Funktionen implementiert sind, dann wird bei jeder Division im Programm die Check-Funktion implizit aufgerufen, d.h wirklich immer bei jeder Division !!!,
Vorsicht, das Programm wird langsamer (zusätzlich zu den langsameren floating point Operationen).
Ich würde immer auf <> 0 prüfen, nur bei den Floatingpoint Divisionen eine eigene Funktion schreiben,
mit den Parametern Dividend, Divisor, Anzahl der zu berücksichtigenden Nachkommastellen
der Rückgabewert ist das Ergebnis der Divison.
Dabei kann in der Funktion die Prüfung auf <> 0 gemacht werden und eine Fehlerausgabe gemacht werden.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo ,
Ich möchte eine division ausführen und der nenner soll ungleich 0 sein ..weil sonst stürtzt das programm ab ?
wie kann ich das programm schreiben ??
das programm sieht so aus :
Test1:=(ausgabe/nenner);
Result:=(remain/Test1 );
Danke im vorraus
Vergleich doch deinen nennen zuvor auf > Null und lass nur dann die Division zu!
MfG
Marcel
Meinst du so etwa ??
IF (nenner>0) ´´oder eher NULL´´ ??
THEN
Test1:=(ausgabe/nenner);
Result:=(remain/Test1 );
END_IF
genau.
Du musst natürlich auf >0 überprüfen, damit die Division bei allem Durchgeführt wird was größer als 0 ist.
Wenn dein Nenner nun 0 ist könntest du mittels ELSE darauf reagieren und ggf. etwas anderes rechnen oder
eine Fehlermeldung ausgeben.
MfG
Marcel
Danke Marcel !
Hi
Sorry daß ich mich einmische.
Ich benötige z.b.
X = 100
Y = 0.5
Geht nicht, da Y kleiner als Null ist.
Wollt ihr das
Üblicherweise vergleicht man auf z.b. kleiner als 0.0001
Somit kannst du auch 0.001 einsetzen.
Oder habe ich einen Denkfehler ?
0.0000000000000000001 ist auch größer als 0
Es wird eine ganz schön "große Zahl" hierbei rauskommen.
Ich verstehe nicht wie 0.5 kleiner null ist ??? an sonsten bei mir ist sowieso nicht der fall ich habe nur ganzzahlige werte !
es stimmt aber bei 0.0000001 wird die division ausgeführt weil die bedingung erfüllt ist
Originally created by: ebt'ler
Wieso vergleich Ihr nicht auf Ungleich, also mit "<>"?
Negative Zahlen müssen doch auch zugelassen sein.
Vielleicht wäre auch folgendes interessant:
Die CheckDiv Funktionen sollten nur zu Testzwecken eingebaut sein,
wenn die Funktionen implementiert sind, dann wird bei jeder Division im Programm die Check-Funktion implizit aufgerufen, d.h wirklich immer bei jeder Division !!!,
Vorsicht, das Programm wird langsamer (zusätzlich zu den langsameren floating point Operationen).
Ich würde immer auf <> 0 prüfen, nur bei den Floatingpoint Divisionen eine eigene Funktion schreiben,
mit den Parametern Dividend, Divisor, Anzahl der zu berücksichtigenden Nachkommastellen
der Rückgabewert ist das Ergebnis der Divison.
Dabei kann in der Funktion die Prüfung auf <> 0 gemacht werden und eine Fehlerausgabe gemacht werden.