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.

Neueste Beiträge

DDC hakt nach: Wie baust Du eine Softwarearchitektur ohne Schuldenfalle auf?
Moderne Softwarearchitektur muss zukunftsfähig sein – aber auch schon heute funktionieren. David Tielke über den architektonischen Spagat zwischen Cloud, KI, Schuldenmanagement und gesundem Menschenverstand.
7 Minuten
22. Sep 2025
Delphi als Turbo für die mobile Entwicklung - Mobile Apps entwickeln mit Delphi, Teil 1
Delphi ermöglicht es, effizient plattformübergreifende Anwendungen zu erstellen. In diesem ersten Teil der Serie beleuchten wir die Motivation ebenso wie das Setup eines ersten Beispielprojekts.
6 Minuten
SSH für.NET-Applikationen mit SSH.NET - Best of NuGet, Teil 1
SSH – dahinter verbirgt sich die Abkürzung Secure Shell – ist insbesondere im Bereich der unixoiden Systeme weit verbreitet. Mit SSH.NET steht ein NuGet-Paket zur Verfügung, das die Interaktion mit der sicheren Remote Shell aus .NET-Applikationen heraus zu ermöglichen sucht.
6 Minuten
25. Sep 2025
Miscellaneous

Das könnte Dich auch interessieren

.NET Framework 4.6.2 ist da - 03.08.2016, 00:00 Uhr
Viele der Neuerungen von .NET 4.6.2 basieren auf dem über UserVoice und Connect gegebenen Feedback von Entwicklern, so beispielsweise die Abschaffung des 260-Zeichen-Limits für Pfade.
2 Minuten
.NET-Wrapper für hilfreiche Bibliotheken - Empfohlene Downloads
Es gibt Funktionen, die will man nicht selbst programmieren. Vielleicht, weil diese selten benutzt werden oder weil es dafür schon Tools gibt. Doch auch das Anbinden von solchen Tools an eigene Software kann aufwendig sein. Es sei denn, Sie finden den passenden Wrapper. Und das dürfte in vielen Fällen kein Problem sein. Denn eines hat unsere Recherche für den Schwerpunkt der Heft-Disk ergeben: Wrapper gibt es wie Sand am Meer. Deshalb: Schmökern Sie rein ...
7 Minuten
14. Aug 2017
Erstellung von ZUGFeRD 2.3 mit .NET C# - Rechnungserstellung
ZUGFeRD 2.3 konforme Rechnungen mit TX Text Control .NET Server für ASP.NET erstellen.
3 Minuten
9. Jan 2025
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige