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

SignalRC WebRTC - Der DDC-Truck, Teil 3
WebRTC ist als Tool ideal geeignet, um Videodaten von RC-Modellen in Echtzeit zu übertragen.
7 Minuten
Vektorfunktionen mit pgvector in PostgreSQL - Indizes & Co. in PostgreSQL, Teil 6
Bei der Vektorsuche legt PostgreSQL mit pgvector den Schwerpunkt auf Kombinierbarkeit: Vektoren werden zu sortierbaren Werten, <-> wird zu einem erstklassigen Ordnungsoperator und HNSW wird zu einer weiteren Indexzugriffsmethode, die der Planer berücksichtigen kann.
6 Minuten
Common Table Expressions (CTEs) - Acht Kostbarkeiten in T-SQL, Teil 6
Sind CTEs elegante Zwischentabellen oder nur temporäre Illusionen?
7 Minuten

Das könnte Dich auch interessieren

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
SignalRC – in Echtzeit ans Steuer - Der DDC-Truck: Auf in die Welt mit SignalR, Raspberry Pi und sechs Rädern
Ein vernetztes Fahrzeug, gesteuert per Weboberfläche und LTE. SignalR sorgt dabei für millisekundenschnelle Kommunikation – direkt, stabil und skalierbar.
16 Minuten
21. Jan 2026
Version 30 von List & Label mit neuen Cloud-Funktionen - Reportgenerator
Die neue Version des Reporting-Tools List & Label unterstützt Entwickler:innen mit neuen Features, die speziell für Cloud- und Webumgebungen konzipiert sind.
2 Minuten
21. Okt 2024
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige