![]() |
Division
Hallo zusammen,
kann das jemand kurz testen und mir sagen wo das Problem liegt? :oops:.
Delphi-Quellcode:
Danke
Label1.Caption := FormatFloat('0.00', StrToFloat(Edit1.Text) / 0.00);
Gruß Andreas |
Re: Division
Ja, du versuchst durch 0 zu teilen. Und das kann man nicht
|
Re: Division
Hallo,
gibt es da irgend ein Trick? Ist ja nur bei Gleitkomma, bei Ganzzahlen geht ja eine Division durch 0. Gruß Andreas |
Re: Division
Zitat:
|
Re: Division
Zitat:
Division durch 0 geht nicht :wall: |
Re: Division
Angenommen es wäre mathematisch erlaubt, so müsste das Ergebnis "unendlich" lauten, oder?
|
Re: Division
Zitat:
|
Re: Division
Zitat:
Andererseits kann man aber auch im negativen Bereich näher an die 0 herankommen. Da würde es genauso laufen. durch -0,1 wird es 10 mal so viel im negativen Bereich, durch 0,01 100 mal so viel etc. Das würde dann -unendlich ergeben. Deshalb kann man durch 0 auch nicht teilen, das ist völliger Quatsch, da es gleichzeitig die höchste aller zahlen UND die niedrigeste wäre ;) edit: @ZeroQool007: bitte nicht flamen, er hat 'ne Frage gestellt, da kann man auch gut gesittet und mit einer anständigen Antwort antworten ;) |
Re: Division
mathematik 2 klasse volksschule ^^
|
Re: Division
Zitat:
|
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:
|
Re: Division
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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