2013-01-23 3 views
6

I-Werte haben mehr als 1.97626258336499E-323Wie Float-Werte verarbeiten, die größer als der Maximalwert sind doppelt

ich BigInteger auch verwenden kann nicht, da es nur die Werte Integer-Handler

Jede Hilfe

geschätzt

Hier ist der Code, der auch mit einigen Lösung von einigen Benutzern gegeben gescheitert failed:

BigValue/(Math.Pow((1 + ret), j)); 

wo BigValue ist so etwas wie 15.000,25

ret ist -0,99197104212554987

Und j auf rund 500-600 gehen.

ich gettting bin nicht, wie zu Rational Klasse verwenden, um diesen

+0

zur Dokumentation ist die maximale vaue Nach 1.7976931348623157E + 308. http://msdn.microsoft.com/en-us/library/system.double.maxvalue.aspx –

+0

@RichardSchneider Pleaser lesen über Epsilon und meine Frage ist, größere Werte für Finanzgleichungen zu speichern – Moons

+0

Ich kenne keine 'BigDecimal/Float auf .NET. Sie müssen auf native Bibliotheken zurückgreifen. – leppie

Antwort

1

BigRational aus dem Basisklassenbibliotheksteam von Microsoft. Es verwendet große Ganzzahlen, um es als Bruchteil zu speichern, unterstützt aber alle Arten von Operatoren.

Wenn es darum geht, es als Dezimalzahl zu drucken, denke ich, dass Sie dafür Ihre eigene Implementierung schreiben müssen. Ich habe irgendwo einen für diesen Kurs geschrieben, aber ich müsste ihn finden.

0

Sie Sprachen umzuschalten, die einen BigFloat Typen (zB Haskel und Python haben nativen Pakete) oder auch einen dritte Partei großen Schwimmer zu finden haben Bibliothek mit einer C# Bindung. Es gab einige Diskussionen über eine solche Bindung für GNU MP, aber es verblasste. Vielleicht schreibst du einen!

Siehe auch this discussion wo MS BigRational diskutiert wird. Dies unterscheidet sich jedoch von BigFloat.

0

Eine Lösung könnte sein, Ihre Probleme stattdessen im Protokollbereich zu tun.

Ihr Beispiel würde:

exp(log(Number) - log(1-0.9999999) * 400) 
0

Erfahren Sie, wie Protokolle verwenden, um mit Zahlen wie diese zu funktionieren. Ja, Sie können ein großes Float-Paket verwenden, aber das ist fast immer Overkill. Sie können in der Regel erhalten, was Sie mit Protokollen benötigen.

Verwandte Themen