| 

.NET C# Java Javascript Exception

2
Hallo,
ich habe diese Frage vor einigen Tag schon einmal gestellt. Da keine Lösungen angeboten werden konnten, möchte ich die Frage noch einmal posten. Ich selbst habe lange recherchiert und kann nicht glauben, dass es keine passende Lösung geben soll. Auch teure, kommerzielle Bibliotheken sollen mir recht sein.


Wie verrechnte ich Dezimalzahlen mit mehr als 28 Stellen (mehr Stellen als Typ "Decimal")?


BITTE nicht "Double" nennen, denn ein Double hat nur eine Genauigkeit von 15 Stellen.
Ich habe tatsächliche eine Zahlen mit 42 Nachkommastellen und möchte mit diesen Berechnungen durchführen.

Folgene (schlechte) Lösungsansätze habe ich probiert:
- BigDecimal aus J# einbinden (klappt nicht, da es Probleme in .NET gibt, außerdem
schlechte Lösung)
- w3b.Sine Bibliothek (ist buggy und kaum getestet)
- BigNum Bibliothek (kaum getestet und buggy)
- Ich programmiere jetzt eigene eigene Lösung (eine Klasse BigDecimal), was aber
sehr sehr aufwendig ist (nutze intern einen BigInteger und merke mit die Stelle des Kommas)

Es MUSS doch eine passende, getestete und lauffähige Lösung geben?

Viele Grüße

Maik
18.04.2011
Maik_1978 674 1 8
3 Antworten
2
Du kannst die im .net Framework eingebaute BigInteger Klasse nehmen und den Exponenten der Kommazahl separat als int speichern. Beispiel:

1234.5678 = 12345678 * 10^-4

Du würdest also 1234.5678 speichern als { Mantisse = new BigInteger(12345678), Exp = -4, IsNeg = false }.

Die Rechenregeln für + - * und / sind relativ leicht damit umzusetzen.
18.04.2011
alexander 840 2 9
Eine umständliche Lösung, aber was will man machen, wenn alle vorhandenen libs versagen? Das hier ist immerhin einigermaßen failsafe.
alexander 18.04.2011
3
Schau Dir doch mal Extreme Optimization an.
18.04.2011
Matthias Hlawatsch 13,2k 4 9
Richtig bingen oder googlen ;)
Florian Mätschke 18.04.2011
http://www.google.com/search?q=math+lib+.net+precision ;-)
Matthias Hlawatsch 18.04.2011
-1
Ich folgendes Projekt nicht wirklich könnte mir aber vorstellen dass es ein verbessertes handling hat

-> http://mathnetnumerics.codeplex.com/
18.04.2011
Gentlehag 1,0k 2 8
Eine schöne Mathe-Lib, aber ein (zugegebenermaßen eiliges) Browsen der API hat mir nichts gezeigt, das in die gesuchte Richtung eines BigDecimal-Äquivalents geht. Hast Du da konkret was im Auge gehabt?
Matthias Hlawatsch 18.04.2011

Stelle deine Dezimalsystem-Frage jetzt!