2

ええと... BIGFLOAT http://www.fractal- Landscapes.co.uk/bigint.html

0.4 ^(1000 または 100000000) のようなものを計算する必要があるのは、非常に長い時間がかかる問題です。並列プログラミングや分散プログラミングについてはまだ勉強していませんが、高速でわかりやすい解決策が必要です。この企画をあと6時間で配信!! :D

コードは次のとおりです。

private BigFloat getBlocking(double k)
    {
        double p1, p2;
        BigFloat p3;
        p3 = new BigFloat(pp);
        p1 = this.P / (double)(k / (double)this.N);
        p2 = Math.Pow((1 - p1), 2);
        p3= new BigFloat(1-p2,pp);
        p3.Pow((int)k);
        return p3;

    }

ここで、K は 1000 、N は 1001 です

4

2 に答える 2

7

すべての桁が必要ない場合は、対数を使用して回避できます。の対数は(0.4 ^ 100000000)log(0.4)*100000000、通常の浮動小数点の範囲内です。

于 2011-04-21T01:59:35.220 に答える
3

C# プロジェクトから Microsoft J# .NET ライブラリをダウンロードして参照し、J# の BigDecimal 実装を使用できるようにします。

見る:

C# での任意精度の小数

大小数:

J# ランタイムをインストールします (無料です): http://www.microsoft.com/downloads/en/details.aspx?familyid=f72c74b3-ed0e-4af8-ae63-2f0e42501be1&displaylang=en

と:

C#の任意精度小数?

と:

http://geekswithblogs.net/gyoung/archive/2006/05/01/76869.aspx

J# 再頒布可能ファイルには、十分にテストされた BigInteger と BigDecimal の実装が含まれており、J# アセンブリ vjslib.dll を参照するだけで、.NET アプリで直接使用できます。 http://download.microsoft.com/download/2/e/9/2e9bde04-3af1-4814-9f1e-733f732369a3/NETMatters0512.exe では、これについてさらに説明しています。また、非常に便利ないくつかの Zip クラスも継続しています。

と:

MSDN - BigInteger、GetFiles など

Web を検索して、C#、C++、およびその他のさまざまな言語で多数の実装を見つけることができますが、必要ではない場合もあります。J# ライブラリに依存することを気にしないのであれば、既に多数の実装を自由に使用できます。実際、あなたは2つ持っています。J# ランタイム ライブラリ vjslib.dll は、.NET Framework と同様に、再配布可能なコンポーネントとして利用できます。Visual J# Downloads からダウンロードできます (Visual Studio® の前提条件としてもインストールされます)。C# または C++ アプリケーションが Microsoft.VisualBasic.dll (Visual Basic ランタイム ライブラリ) を利用できるのと同じ方法で、C#、Visual Basic®、および C++ アプリケーションは J# ランタイム ライブラリと多数の興味深い公開するクラス。

于 2011-04-21T01:13:47.483 に答える