![]() |
Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Wenn ich in C# ein float durch 0 teile erhalte ich Infinity. Gemäß
![]() Wie seht Ihr das Verhalten? Macht es die Arbeit in C# zB leichter oder schwerer? Vermisst Ihr das Verhalten in ObjectPascal? Sherlock |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Im Ernst?
Na gut: mir ist die Exception lieber, weil ich unmißverständlich darauf gestoßen werde, daß ich eine ungültige Situation habe, die es zu klären gilt. Andernfalls käme es zu verfälschten Ergebnissen. ;-) |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Das wird über die
![]() D.h. du kannst das C#-Verhalten damit auch in Delphi bekommen. Delphi lässt diese Maske unverändert, C# wird es (vermutlich wegen DirectDraw und Co.) Standardmäßig auf "schmeiß keine Exception" setzen. |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Jupp, auch in Delphi kennen die Floats (Single/Double/Extendet) solche Zustände,
aber, wie bereits genannt, wir das nicht standardmäßig als "Fehlerwert" gesetzt, sondern löst die Fehlerbehandlung aus. Infinity NegInfinity NaN |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
solange ich nicht "Unendlich" erwarte, ist mir die Exception lieber.
(irgendein Wert ist 0 geworden und ich hab nicht daran gedacht) Gruß K-H |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Mir sind Exceptions auch lieber, dann kann man da wo das Problem auftritt auch darauf reagieren.
INFINITE oder auch NAN verschleppen das Problem meiner Meinung nach nur an eine andere Stelle. Das ganze wird dann lustig wenn man in einer mixed Umgebung arbeitet, sprich eventuell Dlls aus anderen Sprachen einsetzt. Da kann es schon mal passieren das die Dll das Controlword der FPU ändert. Ganz spassig ist, das in der RTL die FPU Funktionen nicht Threadsave sind. Wir haben hier schon die tollsten Sachen gesehen. Da gibt es seit Jahren QC's dazu. |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Zitat:
|
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Delphi weicht hier, wie so oft, vom Standard ab. In vielen Anwendungen haben wir die FPU-Exceptions abgeschaltet.
Windows: Zitat:
![]() GNU C: Zitat:
![]() IEE 754 höchstselbst: Zitat:
![]() Und: Zitat:
![]() Auch in letzter Zeit sind "neuere" Sprachen wie Java und C# genau diesen Weg gegangen. Nur Delphi ist da wieder anders. |
AW: Warum kommt bei Gleitkommadivision durch 0 eine Exception?
Zitat:
Zitat:
+x \ 0 = Infinity -x \ 0 = NegInfinity 0 \ 0 = NaN 0 durch x ist zwar "immer" 0, aber da das Ergebnis von x durch 0 nicht definiert ist, bleibt nur noch NaN. Da x durch einen immer kleineren Wert gegen ±Unendlich strebt, hat man sich hier als "Sonderlösung" für Unendlich entschieden, auch wenn es eigentlich kein definierter Wert ist, und wenn C# und Viele Andere sich nun standardmäßig für diese Lösung entscheideen, dann kann man davon halten, was man will. :freak: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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