vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: DivisionByZero-Error in VB.NET 
Autor: Manfred X
Datum: 05.05.06 06:25

Hallo Silver!

Ich bezweifle, ob Dir wirklich klar geworden ist, worum es mir geht.

Der Datentyp DOUBLE löst in VB.Net überhaupt keine ‚Exceptions’ aus.

Das bedeutet, FAST JEDE Gleitkomma-Operation kann im Prinzip unerkannt das Resultat INFINITY oder NAN ergeben. Man ist deshalb in VB.Net gezwungen, selbst eine Klasse zu erstellen, die den Datentyp DOUBLE kapselt und die Überwachung aller kritischen Gleitkomma-Operationen besorgt. Das bedeutet: Arbeitsaufwand und Performance-Einbußen !!

Dein Beispiel ist übrigens auch nicht korrekt.

Bei einer Division 0 / 0 scheitert Deine Abfrage nämlich, weil da der Sonderwert NAN ( = 1.#IND) zugewiesen wird.

Verwende also besser in Zukunft in Deinen VB.Net-Programmen folgende doppelte Abfrage:

c = a / b
if Double.isinfinity(c) or double.isnan(c) then ......

Und wenn Du sicher sein willst, nichts zu übersehen - dann füge diese Abfrage nach allen möglicherweise kritischen Gleitkomma-Operationen in Deinem Programm ein (also z.B. bei c = a + b : c = log(b) : c = a ^ b : c = sqrt(b) usw. usw.)

Viel Spaß dabei!

Wenn Du das erledigt hast, müsstest Du auch noch Deine Festkomma-Operationen checken. Z.B. ergibt (i% / k%) auch einen Double-Wert, der im Fehlerfall nicht abgefangen wird. Wenn Dir das alles nichts ausmacht ...

Und auf noch einen wichtigen Gesichtspunkt möchte ich dich hinweisen:

Falls als Folge einer Gleitkomma-Überschreitung eine Variable y den Wert 'infinity' erhalten hat, steht sie nach der Operaton y = x / y wieder auf 0 - gfalls x einen gültigen Wert besitzt.
Es ist also an der Variablenausprägung nicht mehr zu erkennen, dass jemals eine Überschreitung vorgelegen hat. Alle nun noch folgenden Berechnungen beruhen auf einem sinnlosen y-Wert und sind deshalb falsch!

Vielleicht solltest Du Deine Haltung doch noch einmal ein wenig überdenken.

Nicht alles was die VB.Net-Entwickler an BASIC geändert haben, ist tatsächlich auch ein Fortschritt.

Ich jedenfalls bleibe vorerst bei VB6 und warte auf die nächste Version von VB.Net.


Gruß, Manfred
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DivisionByZero-Error in VB.NET1.087Manfred X01.05.06 18:41
Re: DivisionByZero-Error in VB.NET681Moderatorralf_oop01.05.06 18:49
Re: DivisionByZero-Error in VB.NET694Manfred X01.05.06 19:30
Re: DivisionByZero-Error in VB.NET638Drapondur01.05.06 22:12
Re: DivisionByZero-Error in VB.NET650Manfred X02.05.06 23:39
Re: DivisionByZero-Error in VB.NET640ModeratorDaveS01.05.06 22:33
Re: DivisionByZero-Error in VB.NET660Manfred X02.05.06 09:48
Re: DivisionByZero-Error in VB.NET620ModeratorDaveS02.05.06 12:47
Re: DivisionByZero-Error in VB.NET652Manfred X02.05.06 23:50
Re: DivisionByZero-Error in VB.NET770ModeratorDaveS03.05.06 08:35
Re: DivisionByZero-Error in VB.NET665Manfred X04.05.06 06:46
Re: DivisionByZero-Error in VB.NET605ModeratorDaveS04.05.06 09:07
Re: DivisionByZero-Error in VB.NET625Manfred X04.05.06 20:42
Re: DivisionByZero-Error in VB.NET711Silver04.05.06 22:23
Re: DivisionByZero-Error in VB.NET730Manfred X05.05.06 06:25
Re: DivisionByZero-Error in VB.NET 618ModeratorDaveS05.05.06 09:25
Re: DivisionByZero-Error in VB.NET 682Manfred X09.05.06 00:57
Re: DivisionByZero-Error in VB.NET611Moderatorralf_oop04.05.06 16:33
Re: DivisionByZero-Error in VB.NET662Manfred X04.05.06 20:39
Re: DivisionByZero-Error in VB.NET644Wolf mit Schnul...02.05.06 19:51
Re: DivisionByZero-Error in VB.NET626ModeratorDaveS02.05.06 22:03
Re: DivisionByZero-Error in VB.NET667Moderatorralf_oop05.05.06 15:02
Re: DivisionByZero-Error in VB.NET617Manfred X09.05.06 00:49

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel