![]() |
Re: Division
Zitat:
Wenn hier weiter ein User "beleidigt" wird müssen wir wohl mal die DP-Katze holen. |
Re: Division
Fakt ist es gibt spezielle Compiler-Konstanten mit einer Divison durch Null.
NaN (not a number) = 0.0/0.0; Infinity = 1.0/0.0; -Infinity = -1.0/0.0; Weiss jetzt nicht, wo die definiert sind und wie der richtige Name ist. Aber es gibt sie. Versucht mal folgendes:
Delphi-Quellcode:
Es hängt davon ab, wie die FPU eingestellt ist. Nicht jedem Fall wird eine EDivisionZero ausgelöst.
var
test : double; begin test:=0.0/0.0; // Hier kommt kein Fehler ShowMessage(IntToStr(trunc(test)); // hier sollte jetzt Ungültige Gleitkommaoperation kommen Wenn du dagegen StrToFloat machst, dann dürfte sogar NaN erscheinen anstatt eine Ungültige Gleitkommaoperation. Man muss einfach mal damit etwas rumspielen. Fakt ist, dass ich massive Probleme damit habe, weil einfach die Behandlung durch die FPU nicht konsequent genug ist. Oft habe ich schon Ungültige Gleitkommaoperationen gehabt, weil an ganz anderer Stelle (die man nicht ohne weiteres findet), Divisionen durch 0 gemacht wurden. P.S: Ich hoffe mein Beispiel funktioniert so. Zumindestens ist es bei Delphi 5 so. |
Re: Division
@Sharky das ist wohl die niedrigste form von beleidgung und es wahr eher ,.. nett gemeint ;)
|
Re: Division
:roll: Ihr bläht echt jede Mücke zum wissentschaftlichen Forschungsmammut auf. Durch Null teilen geht nicht. Wozu noch diskutieren/rumstänkern etc?
|
Re: Division
Zitat:
|
Re: Division
Hallo,
mit dem Trick meinte ich auch nicht 12/0 das es geht, sonder vielmehr einen Trick damit die Fehlermeldung nicht mehr kommt. :thumb: Was hab ich angerichtet :oops: Gruß Andreas |
Re: Division
Stichwort Exception! :)
Code:
Da der erste Befehl die Exception auslößt (EDivByZero), wird der except-Teil abgearbeitet.
b := 0;
try a := 5 / b; except a := 123456; end; showmessage(inttostr(a)); |
Re: Division
Und was passiert bei:
Delphi-Quellcode:
Hab leider kein Delphi da. Aber theoretisch dürfte nicht die Exception ausgelöst werden. Genau wie bei 1/b oder -1/b. :duck:
b := 0;
try a := 0 / b; except a := 123456; end; showmessage(inttostr(a)); Wobei besser ist a als double zu machen und dementsprechend FloatToStr zu verwenden |
Re: Division
Natürlich wird die Exceptions aussgelößt!
Division durch 0 wird IMMER eine Exception auslösen! :)
Code:
procedure testen;
var a, b: Double; begin b := 0; try a := 0 / b; except a := 123456; end; showmessage(floattostr(a)); end; Per showmessage kommt '123456'. |
Re: Division
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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