Zu Beginn von Programmierbüchern wird in der Regel folgende Warnung angezeigt: "Nicht durch Null teilen! Es wird ein Laufzeitfehler angezeigt!"
In VB.NET haben sich die Dinge geändert. Obwohl es mehr Programmieroptionen gibt und die Berechnung genauer ist, ist nicht immer leicht zu erkennen, warum die Dinge so ablaufen, wie sie ablaufen.
Hier erfahren Sie, wie Sie mit der Division durch Null mithilfe der strukturierten Fehlerbehandlung von VB.NET umgehen. Unterwegs behandeln wir auch die neuen VB.NET-Konstanten: NaN, Infinity und Epsilon.
Wenn Sie in VB.NET ein Szenario zum Teilen durch Null ausführen, erhalten Sie das folgende Ergebnis:
Dimmen Sie a, b, c als Double
a = 1: b = 0
c = a / b
Console.WriteLine (_
"Haben Sie mathematische Regeln" _
& vbCrLf & _
"aufgehoben worden?" _
& vbCrLf & _
"Durch Null teilen " _
& vbCrLf & _
"muss möglich sein!")
Also, was ist hier los? Die Antwort ist, dass VB.NET Ihnen tatsächlich die mathematisch korrekte Antwort gibt. Mathematisch gesehen Sie können Teilen durch Null, aber was Sie bekommen, ist "Unendlichkeit".
Dimmen Sie a, b, c als Double
a = 1: b = 0
c = a / b
Console.WriteLine (_
"Die Antwort ist: " _
& c)
'Displays:
Die Antwort lautet: Unendlichkeit
Der Wert "unendlich" ist für die meisten Geschäftsanwendungen nicht besonders nützlich. (Es sei denn, der CEO fragt sich, wie hoch die Obergrenze für seinen Aktienbonus ist.) Damit wird jedoch verhindert, dass Ihre Anwendungen bei einer Laufzeitausnahme abstürzen, wie dies bei weniger leistungsfähigen Sprachen der Fall ist.
VB.NET bietet Ihnen noch mehr Flexibilität, da Sie sogar Berechnungen durchführen können. Überprüfen Sie dies heraus:
Dimmen Sie a, b, c als Double
a = 1: b = 0
c = a / b
c = c + 1
'Unendlichkeit plus 1 ist
'noch unendlich
Um mathematisch korrekt zu bleiben, gibt Ihnen VB.NET für einige Berechnungen wie 0/0 die Antwort NaN (Not a Number).
Dimmen Sie a, b, c als Double
a = 0: b = 0
c = a / b
Console.WriteLine (_
"Die Antwort ist: " _
& c)
'Displays:
Die Antwort lautet: NaN
VB.NET kann auch den Unterschied zwischen positiver und negativer Unendlichkeit feststellen:
Dim a1, a2, b, c As Double
a1 = 1: a2 = -1: b = 0
Wenn (a1 / b)> (a2 / b) Dann _
Console.WriteLine (_
"Postive Unendlichkeit ist" _
& vbCrLf & _
"größer als" _
& vbCrLf & _
"negative Unendlichkeit.")
Neben PositiveInfinity und NegativeInfinity bietet VB.NET auch Epsilon, den kleinsten positiven Double-Wert größer als Null.
Beachten Sie, dass alle diese neuen Funktionen von VB.NET nur mit Gleitkomma-Datentypen (Double oder Single) verfügbar sind. Und diese Flexibilität kann zu einer gewissen Verwirrung um Try-Catch-finally (strukturierte Fehlerbehandlung) führen. Beispiel: Der oben genannte .NET-Code wird ausgeführt, ohne dass eine Ausnahme ausgelöst wird. Daher hilft es nicht, ihn in einem Try-Catch-finally-Block zu codieren. Um auf eine Division durch Null zu testen, müssten Sie einen Test wie den folgenden codieren: