2013-01-23 8 views
6

I mają wartości większe niż 1.97626258336499E-323Jak obsługiwać wartości wolnym obrocie, które są większe niż maksymalna wartość dwukrotnie

nie mogę używać BigInteger także to handler tylko całkowitą wartości

Każda pomoc jest mile widziana

Oto kod, który również nie powiodło się z jakiegoś rozwiązania podanego przez niektórych użytkowników:

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

gdzie BigValue jest coś takiego jak 15000.25

ret jest -0,99197104212554987

i J trafi do około 500-600.

nie jestem gettting jak używać Rational zajęć tej zbyt

+0

zgodnie z dokumentacją max vaue jest 1.7976931348623157E + 308. http://msdn.microsoft.com/en-us/library/system.double.maxvalue.aspx –

+0

@RichardSchneider Proszę przeczytać o Epsilonie, a moim pytaniem jest przechowywać więcej większych wartości dla równań finansowych – Moons

+0

Nie znam "BigDecimal/Float' on .NET. Będziesz musiał uciekać się do bibliotek natywnych. – leppie

Odpowiedz

1

BigRational z zespołu biblioteki klas podstawowych firmy Microsoft. Używa dużych liczb całkowitych do przechowywania go jako ułamka, ale obsługuje wszystkie rodzaje operatorów.

Jeśli chodzi o drukowanie w postaci dziesiętnej, myślę, że trzeba napisać własną implementację. Mam gdzieś napisaną dla tej klasy, ale musiałbym ją znaleźć.

0

Będziesz musiał przełączać języki na taki, który ma typ BigFloat (np Haskel i Python posiada natywne pakiety), albo znaleźć osobę trzecią Big Float biblioteka z wiązaniem C#. Było trochę dyskusji o takim wiązaniu dla GNU MP, ale zniknęło. Może napiszesz!

Zobacz także this discussion, gdzie omówiono MS BigRational. Jednak różni się od BigFloat.

0

Jednym z rozwiązań może być zamiast tego rozwiązywanie problemów w przestrzeni dzienników.

Twój przykład staną:

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

Naucz się korzystać z dzienników do pracy z liczbami jak te. Tak, MOŻESZ korzystać z dużego pakietu pływającego, ale to prawie zawsze przesada. Zwykle możesz uzyskać to, czego potrzebujesz, używając dzienników.

Powiązane problemy