6

1.97626258336499E-323より大きい値があります

BigIntegerは整数値のみを処理するため、使用できません

どんな助けでも大歓迎です

失敗したコードは、一部のユーザーによって提供された解決策でも失敗しました。

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

WHereBigValueは15000.25のようなものです

retは-0.99197104212554987です

そして、jは約500-600に行きます。

これにもRationalClassの使い方がわからない

4

5 に答える 5

1

ここに役立つかもしれないものがあります。少し前まで問題なく使用していました。これは .Net BigDecimal クラスです。codeplex からダウンロードできます (またはソースを参照してください)。

http://bigdecimal.codeplex.com/releases/view/44790

VB.Net (.Net 4.0) で書かれていますが、それは問題ではありません。

C# での使用例: http://www.dreamincode.net/forums/blog/217/entry-2522-the-madman-scribblings/

于 2013-01-24T16:55:33.303 に答える
1

Microsoft の基本クラス ライブラリ チームのBigRational 。大きな整数を使用して分数として格納しますが、あらゆる種類の演算子をサポートします。

小数として出力する場合は、独自の実装を作成する必要があると思います。このクラスのどこかに書いたものがありますが、それを見つけなければなりません。

于 2013-01-23T05:36:55.933 に答える
0

解決策の1つは、代わりにログスペースで問題を解決することです。

あなたの例は次のようになります:

exp(log(Number) - log(1-0.9999999) * 400)
于 2013-01-23T05:47:02.357 に答える
0

ログを使用してこのような数値を処理する方法を学びます。はい、大きなフロートパッケージを使用できますが、ほとんどの場合、それはやり過ぎです。通常、ログを使用して必要なものを取得できます。

于 2013-01-24T15:39:25.610 に答える
0

言語をタイプのある言語に切り替える必要があります(たとえば、Haskel と Python にはネイティブ パッケージがあります)。そうしないと、バインディングBigFloatを備えたサード パーティ製の大きな float ライブラリを見つける必要があります。GNU MPC#のそのようなバインディングについての議論がありましたが、それは消え去りました。多分あなたはそれを書くでしょう!

MS BigRational について説明しているこのディスカッションも参照してください。ただし、これは BigFloat とは異なります。

于 2013-01-23T05:31:04.547 に答える