Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 2 Min.

Big Decimal in C#

Weil er keine Implementierung gefunden hat, die ihm gefiel, hat der amerikainische Softwareentwickler Paulo Zemek eine eigene BigDecimal-Inmplementierung in C# geschrieben und auf CodeProject veröffentlicht.
C# und .NET im Allgemeinen bieten derzeit keine BigDecimal-Klasse an. Lediglich eine BigInteger-Klasse wird angeboten. Der einzige wirkliche Unterschied zwischen BigInteger und BigDecimal ist die Tatsache, dass BigDecimal ein Dezimaltrennzeichen hat, um ganze Zahlen von den Bruchzahlen/Float-Zahlen zu trennen. Das wollte Entwickler Paulo Zemek hinzufügen: Eine Klasse, die eine beliebige Zahl als BigInteger speichert und die ein weiteres Feld aufweist, welches besagt wo genau das Trennzeichen sitzt. Freilich fehlen dann noch die Rechenmethoden, etwa das Multiplizieren oder das Dividieren von BigInteger-Zahlen.Die Lösung von Zemek nutzt für den Test seines Codes für die Division eine Beispielanwendung, die 100 Ziffern verwendet. Als Dezimaltrennzeichen wird der Punkt verwendet - unabhängig von den Region-Einstellungen auf dem Computer. Wer mit Zahlen wie 4328947293473294729347329847329432 für den Divisor und 23423432432432432423423 für den Teiler arbeiten will/muss, findet mit BigDecimal eine Lösung, während .NET hier durcheinander gerät.Wer sein eigenes Datenformat baut, kann auch so etwas einbauen: Zemek hat seine Klasse dazu gebracht, 1 zurückzugeben, wenn man 0 durch 0 dividiert. Dies soll mit der Vereinfachung in Formeln kompatibel sein, wo x/x immer eins ist. Wenn x 0 ist und man die Vereinfachung nicht vornimmt, wird in den meisten Fällen 0/0 zurückgegeben. In Zemeks Klasse wird 1 zurückgeben.In seinem Artikel auf CodeProject stellt Zemek seine Arbeit nicht nur vor und kommentiert sie, sondern er schreibt auch darüber, welche (teils unnütze) Wege er dabei verfolgt hat. Ebenso ist dort der Source-Code seiner Arbeit zu finden und auch die Idee eines Zahlenformats BigRational ist bereits vorhanden. Lesen Sie selbst.
Miscellaneous

Neueste Beiträge

Die Kunst der langen Aufgabenläufe - Kimi K3 – das Modell hinter dem Agenten, Teil 2
Ein guter Code-Generator löst eine klar umrissene Funktion. Ein Coding-Agent muss dagegen ein Repository erkunden, Hypothesen bilden, Werkzeuge auswählen, Tests auswerten und nach Fehlschlägen den Kurs ändern. Kimi K3 zielt auf diese zweite Klasse von Aufgaben.
8 Minuten
Zwei Konferenz-Openings, eine Sprecherin – wie aus einem Terminkonflikt ein KI-Usecase wurde - Making-of eines Avatars mit HeyGen und ElevenLabs
Ein Terminkonflikt gelöst von einem digitalen Zwilling. Die Ebner Media Group hat die erste Infinite AI Conference von einem Avatar eröffnen lassen. Ein Erfahrungsbericht über den Produktionsprozess und den echten Nutzen synthetischer Präsenz.
7 Minuten
12. Aug 2026
MessagePack: JSON als Binär-Image - Best of NuGet, Teil 10
Das Serialisierungsformat MessagePack wurde – anders als JSON – konsequent auf die Bedürfnisse von Maschinen und damit auch auf höchstmögliche Kompaktheit optimiert. Der Vorteil: Ein geringeres zu übertragendes Datenvolumen führt vor allem in IoT-nahen Anwendungen direkt zu geringeren Kosten.
6 Minuten
17. Aug 2026

Das könnte Dich auch interessieren

Das Firmata-Protokoll für einfache Mess- und Steuerungsaufgaben - Best of NuGet, Teil 8
Wer kleinere Mess-, Steuerungs- und Regeltechnik-Aufgaben aus .NET heraus abwickeln möchte, kommt mit einem preiswerten und mit Firmata-Software ausgestatteten Arduino meist problemlos ans Ziel.
7 Minuten
27. Jul 2026
.NET-Color-Picker für WPF- und Avalonia-Applikationen - Best of NuGet, Teil 7
Mit PixiEditor.ColorPicker steht eine Bibliothek in den Startlöchern, die Entwicklern von Desktop-zentrierten Applikationen verschiedene hochwertige Farbauswahldialoge zur Verfügung stellt.
6 Minuten
20. Jul 2026
Wiederholend wie ein Papagei: Polly - Best of NuGet, Teil 8
Viele Probleme der Systemtechnik lassen sich durch wiederholtes Versuchen oder durch Rate Limiting lösen. Die .NET-Bibliothek Polly stellt Entwicklern hierfür verschiedenste Maßnahmen zur Resilienz-Steigerung in Form von schlüsselfertigen Bausteinen zur Verfügung.
6 Minuten
10. Aug 2026
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige