Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Division (https://www.delphipraxis.net/32616-division.html)

Sharky 26. Okt 2004 11:46

Re: Division
 
Zitat:

Zitat von Nicodius
mathematik 2 klasse volksschule ^^

So, jetzt reicht es aber :warn:

Wenn hier weiter ein User "beleidigt" wird müssen wir wohl mal die DP-Katze holen.

jim_raynor 26. Okt 2004 11:48

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:
var
  test : double;
begin
  test:=0.0/0.0; // Hier kommt kein Fehler
  ShowMessage(IntToStr(trunc(test)); // hier sollte jetzt Ungültige Gleitkommaoperation kommen
Es hängt davon ab, wie die FPU eingestellt ist. Nicht jedem Fall wird eine EDivisionZero ausgelöst.
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.

Nicodius 26. Okt 2004 11:49

Re: Division
 
@Sharky das ist wohl die niedrigste form von beleidgung und es wahr eher ,.. nett gemeint ;)

Treffnix 26. Okt 2004 11:59

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?

Chewie 26. Okt 2004 17:47

Re: Division
 
Zitat:

Zitat von Treffnix
:roll: Ihr bläht echt jede Mücke zum wissentschaftlichen Forschungsmammut auf. Durch Null teilen geht nicht. Wozu noch diskutieren/rumstänkern etc?

Weil z.B. IEEE 754, nach denen FPUs auf x86-Systemen arbeiten, für die Division durch null einen speziellen Zustand definiert (nämlich NaN = Not a Number). Warum sollte man dies nicht erzählen dürfen?

AgentAS 26. Okt 2004 23:18

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

ste_ett 27. Okt 2004 07:24

Re: Division
 
Stichwort Exception! :)

Code:
b := 0;
try
  a := 5 / b;
except
  a := 123456;
end;
showmessage(inttostr(a));
Da der erste Befehl die Exception auslößt (EDivByZero), wird der except-Teil abgearbeitet.

jim_raynor 27. Okt 2004 07:38

Re: Division
 
Und was passiert bei:

Delphi-Quellcode:
b := 0;
try
  a := 0 / b;
except
  a := 123456;
end;
showmessage(inttostr(a));
Hab leider kein Delphi da. Aber theoretisch dürfte nicht die Exception ausgelöst werden. Genau wie bei 1/b oder -1/b. :duck:
Wobei besser ist a als double zu machen und dementsprechend FloatToStr zu verwenden

ste_ett 27. Okt 2004 08:03

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'.

Tom 27. Okt 2004 08:10

Re: Division
 
Zitat:

Zitat von ste_ett
Division durch 0 wird IMMER eine Exception auslösen! :)

Ich habe mal zum Spaß in Deinem Beispiel a := 0 / 0 eingesetzt. Das Ergebnis war für mich überraschend ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr.
Seite 2 von 3     12 3      

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