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

Outlook und Mailintegration mit Microsoft Graph - Connected Apps mit .NET, Teil 2
Eine .NET-App meldet Benutzer an, liest Outlook-Nachrichten aus dem Posteingang und bereitet E-Mails für Anzeige und weitere Verarbeitung auf.
8 Minuten
Dokumente und Collaboration mit Microsoft Graph - Connected Apps mit .NET, Teil 3
Eine .NET-App liest Dokumentbibliotheken aus OneDrive und SharePoint, überträgt Dateien und verfolgt Änderungen über Microsoft Graph.
7 Minuten
GitHub Actions umstellen - Schnellere .NET-CI-Pipelines mit Test Sharding, Teil 2
Eine Jobmatrix bringt die lokale Testaufteilung auf mehrere Runner. Damit daraus ein verlässlicher CI-Lauf entsteht, müssen Shard-Nummern, Fehlerstatus und Ergebnisdateien zusammenpassen. Der Workflow zeigt die nötigen Schritte.
6 Minuten

Das könnte Dich auch interessieren

Frühjahrsputz für .NET - Alte .NET-Versionen entfernen
Immer mehr .NET-Versionen sammeln sich auf der Festplatte an. Höchste Zeit, wieder Platz zu schaffen.
14 Minuten
Elektronische Schaltkreise im Browser simulieren - Simulation
Statt mit Steckfeld oder Lötkolben kann man auf dieser Website Schaltungen per Drag and Drop zusammenstellen und deren Verhalten testen.
2 Minuten
26. Jul 2018
UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige