Delphi-PRAXiS

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)

AgentAS 26. Okt 2004 10:32


Division
 
Hallo zusammen,

kann das jemand kurz testen und mir sagen wo das Problem liegt? :oops:.


Delphi-Quellcode:
Label1.Caption := FormatFloat('0.00', StrToFloat(Edit1.Text) / 0.00);
Danke

Gruß

Andreas

Treffnix 26. Okt 2004 10:34

Re: Division
 
Ja, du versuchst durch 0 zu teilen. Und das kann man nicht

AgentAS 26. Okt 2004 11:05

Re: Division
 
Hallo,

gibt es da irgend ein Trick? Ist ja nur bei Gleitkomma, bei Ganzzahlen geht ja eine Division durch 0.

Gruß

Andreas

malo 26. Okt 2004 11:08

Re: Division
 
Zitat:

Zitat von AgentAS
Hallo,

gibt es da irgend ein Trick? Ist ja nur bei Gleitkomma, bei Ganzzahlen geht ja eine Division durch 0.

Gruß

Andreas

Ähm... wo lebst du? Eine Division durch 0 ist schlichtweg unmöglich, das sollte dir dein Mathelehrer aber beigebracht haben :roll:

Raptor 26. Okt 2004 11:23

Re: Division
 
Zitat:

Zitat von AgentAS
Hallo,

gibt es da irgend ein Trick? Ist ja nur bei Gleitkomma, bei Ganzzahlen geht ja eine Division durch 0.

Na da würde mich aber das Ergebniss mal interessieren :shock:

Division durch 0 geht nicht :wall:

leviathan666 26. Okt 2004 11:34

Re: Division
 
Angenommen es wäre mathematisch erlaubt, so müsste das Ergebnis "unendlich" lauten, oder?

ZeroQool007 26. Okt 2004 11:35

Re: Division
 
Zitat:

Angenommen es wäre mathematisch erlaubt, so müsste das Ergebnis "unendlich" lauten, oder?
LOOOOOL, einfach nur klasse der Spruch!

malo 26. Okt 2004 11:39

Re: Division
 
Zitat:

Zitat von leviathan666
Angenommen es wäre mathematisch erlaubt, so müsste das Ergebnis "unendlich" lauten, oder?

Nein. Es wäre -unendlich und +unendlich GLEICHZEITIG. Denn, wenn man durch 0,1 teilt, wird das Ergbnis 10mal so hoch. Durch 0,01 100 mal so hoch, durch 0,001 1000 mal so hoch usw. Das würde dann, wenn bei 0 angekommen ist, unendlich ergeben.

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 ;)

Nicodius 26. Okt 2004 11:45

Re: Division
 
mathematik 2 klasse volksschule ^^

malo 26. Okt 2004 11:46

Re: Division
 
Zitat:

Zitat von Nicodius
mathematik 2 klasse volksschule ^^

2. Klasse? Mein Gott, wie schnell geht ihr denn auf die Division zu??? Bei uns ist das 4. Klasse :roll:

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

Sharky 27. Okt 2004 08:20

Re: Division
 
Zitat:

Zitat von Tom
... Das Ergebnis war für mich überraschend ...

Eigentlich ist es nicht überraschend ;-)

Zitat:

Zitat von Die geliebte Onlinehilfe
Delphi-Syntax:

const NaN = 0.0 / 0.0;

Beschreibung

Mit NaN (Not a Number = keine Zahl) können Sie in Delphi einer Gleitkommavariable einen Wert zuweisen, der keine Zahl darstellt. Verwenden Sie NaN nicht in Vergleichsoperationen. Mit der Funktion IsNan können Sie prüfen, ob eine Variable oder ein Ausdruck den Wert NaN hat.



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