Feb 232011
 

Heute schon die int.MaxValue-Grenze übertreten? Für fast jeden kommt der Moment irgendwann, an dem int = Int32 nicht mehr ausreicht und auch ein Unsigned Int 64 knapp werden könnte. Klassische Beispiele: ewig hochgezählte Unique-IDs oder Comparer, die Strings numerisch sortieren sollen. Normalerweise kein Problem, aber es ist schwer zu garantieren, dass die Grenzen tatsächlich eingehalten werden, und wie schon der (viel zu optimistische) Murphy sagte… *kawumm*

Still und heimlich (weil ungehyped) hat MS einen ganzen Namespace ins .NET-Framework geschmuggelt, der hier Abhilfe schafft.

System.Numerics enthält zwei Strukturen für spezielle Berechnungen, nämlich BigInteger und Complex. BigInteger ist nicht noch ein neuer Datentyp mit noch größeren Grenzen sondern kann tatsächlich unbegrenzt große Ganzzahlen darstellen. Außerdem bietet er natürlich die wichtigsten Rechenoperationen sowie Parse- und Convert-Methoden.

Damit ist er natürlich die ultimative Waffe für das Lösen vieler Rechenprobleme à la Project Euler, die einen bisher oft dazu gezwungen haben, mit Strings zu rechnen oder Überläufe manuell zu behandeln.

Complex hab ich bisher noch nicht ausprobiert, genau genommen sind mir die komplexen Zahlen nach dem Studium in der Praxis nie mehr untergekommen. Vermutlich ließe sich das auch nicht mit dem K.I.S.S.-Prinzip unter einen Hut bringen ;).

P.S.: Das soll aber jetzt kein Aufruf sein, BigIntegers als IDs zu verwenden. Für diese Zwecke gibt es bereits die wesentlich besser geeigneten GUIDs bzw. UUIDs.

n/a