Gibt es eine 128- oder 256-Bit-Klasse in .net?

7

Ich habe eine Anwendung, mit der ich große Zahlen und sehr genaue Zahlen verwenden kann. Dafür brauchte ich eine präzise Interpretation und IntX funktioniert nur für Ganzzahlen.

Gibt es eine Klasse im .net-Framework oder sogar eine dritte Partei (vorzugsweise frei), die das tun würde?

Gibt es einen anderen Weg, dies zu tun?

    
akshaykarthik 03.06.2010, 16:04
quelle

9 Antworten

9

Vielleicht würde der Dezimal-Typ für Sie funktionieren?

    
Tim Pietzcker 03.06.2010, 16:07
quelle
6

Sie können die frei verfügbare, willkürliche Genauigkeit verwenden, BigDecimal from java.math , welches Teil der ist J # redistributable package von Microsoft und ist eine verwaltete .NET-Bibliothek.

Platzieren Sie einen Verweis auf vjslib in Ihrem Projekt und Sie können etwas wie folgt:

%Vor%

Gibt Folgendes für die Debug-Konsole aus:

  

1234567890123456789011223344556677889901.0000009876543210000987654321

Beachten Sie, dass .NET 2010 wie bereits erwähnt eine BigInteger Klasse enthält in der Tat war es bereits in früheren Versionen verfügbar, aber nur als interne Klasse (dh Sie brauchen etwas Reflexion, um es zum Laufen zu bringen).

    
Abel 03.06.2010 16:33
quelle
4

Die F # -Bibliothek hat auch einige wirklich große Zahlentypen, wenn Sie damit einverstanden sind ...

    
Justin 03.06.2010 16:09
quelle
3

Wenn Decimal für Sie nicht funktioniert, versuchen Sie, Code von irgendwo zu implementieren oder zu verwenden. Rational arithmetic verwendet große Ganzzahlen. Das liefert die Präzision, die Sie brauchen.

    
High Performance Mark 03.06.2010 16:11
quelle
3

Ich habe lange nach einer Lösung gesucht und bin heute auf diese Bibliothek gestoßen:

Vierfaches Präzisionsdoppel in C #

  

Signierte 128-Bit-Fließkomma-Datentypbibliothek mit 64 effektiven Bits Genauigkeit (vs. 53 für Doubles) und einem 64-Bit-Exponenten (vs. 11 für Doubles). Quads haben eine größere Genauigkeit und eine größere Reichweite als Doubles und sind besonders nützlich, wenn sie mit sehr großen oder sehr kleinen Werten arbeiten, wie sie in probabilistischen Modellen verwendet werden. Ab Version 2.0 werden alle Quad-Arithmetik überprüft (unterläuft 0, überläuft bis +/- unendlich), hat spezielle PositiveInfinity-, NegativeInfinity- und NaN-Werte und folgt denselben Regeln wie .Net Doppelarithmetik- und Vergleichsoperatoren (zB 1 / 0 == PositiveInfinity, 0 * PositiveInfinity == NaN, NaN! = NaN), was es zu einem bequemen Drop-In-Ersatz für Doubles im bestehenden Code macht.

    
Dr. ABT 28.03.2013 12:30
quelle
2

Verwenden Sie decimal wenn möglich.

    
Femaref 03.06.2010 16:07
quelle
2

Dezimal ist ein 128-Bit (16 Byte) Werttyp, der für hochpräzise Berechnungen verwendet wird. Es ist ein Fließkommatyp, der intern als Basis 10 anstelle von Basis 2 (d. H. Binär) dargestellt wird. Wenn Sie sehr präzise sein müssen, sollten Sie Dezimal verwenden - aber der Nachteil ist, dass Dezimal 20 mal langsamer ist als die Verwendung von Schwimmern.

    
Odhran 03.06.2010 16:33
quelle
2

Schamloser Stecker: QPFloat emuliert den IEEE-Standard mit voller Genauigkeit.

    
Brent 17.06.2016 23:55
quelle
1

Decimal ist 128 Bits, wenn das funktionieren würde.

    
Hans Olsson 03.06.2010 16:08
quelle

Tags und Links