1

数字をいじってみたいと思いますが、基本的には、フィボナッチ数列のアルゴリズムと素数を見つけるためのブルートフォースパスを作成しています。

私はプログラマーではなく、ただの数学者です。

しかし、私がしばしば静かに遭遇する問題は、長くて長いダブルとフロートがしばしば部屋を使い果たしてしまうことです。

JAVAで作業を続けたい場合、部屋が不足しないように、どのようにして独自のデータ型を作成できますか。

概念的には、3つのダブルをこのように組み合わせると思いました。

public class run {

    static double a = 0;
    static double b = 0;
    //static double c = 0;

    static void bignumber(boolean x) {

        if (x == true && a < 999999999) {
            ++a;

        } else if (x == true && a == 999999999) {
            ++b;
            a = 0;
        }
        System.out.print(b + "." + a + " \n");
    }

    public static void main(String[] args) {
        while(true) {
        bignumber(true);

        }
    }

}

これを行うためのより良い方法はありますか、

いつか言えるようになりたい

mydataType X = 18476997032117414743068356202001644030185493386634 10171471785774910651696711161249859337684305435744 58561606154457179405222971773252466096064694607124 96237204420222697567566873784275623895087646784409 33285157496578843415088475528298186726451339863364 93190808467199043187438128336350279547028265329780 29349161558118810498449083195450098483937752272570 52578591944993870073695755688436933812779613089230 39256969525326162082367649031603655137144791393234 7169566988069

またはこのサイトで見つかったその他の番号

私も試しました

package main;

import java.math.BigInteger;

public class run {
    BigDecimal a = 184769970321174147430683562020019566988069;
    public static void main(String[] args) {

    }

}

しかし、それでも範囲外のようです

4

3 に答える 3

3

BigDecimalその目的のために(の代わりにdouble)、およびBigInteger(の代わりintに)を使用longしますが、それらのメソッドでのみ操作できます。演算子は使用できません。

このように使用されます:

BigInteger big = new BigInteger("4019832895734985478385764387592") // Strings...
big.add(new BigInteger("452872468924972568924762458767527");

と同じBigDecimal

于 2012-12-12T06:04:18.913 に答える
1

BigDecimalは、Javaで使用されるクラスであり、非常に大きい数または非常に小さい数を表し、精度を維持する必要があります。欠点は、プリミティブではないため、通常の数学演算子(+/- / * / etc)を使用できないことと、プロセッサ/メモリを少し消費する可能性があることです。

于 2012-12-12T06:09:17.700 に答える
0

次のように大量に保存できます。

  • 長さ
  • 数字[]

そして彼らのためにあなたの数学を実行します。これはそれほど複雑ではありません。ヒントとして、すべてをより単純にするために、数字を逆の順序で格納できます。これにより、計算の実装が簡単になります。常にnr[k]とnr[k]を追加し、任意の長さの数値を転送する余地があります。短い数値を0で入力することを忘れないでください。

Knuth Seminumeric Algorithmsの本では、すべての操作に非常に優れた実装を見つけることができます。

于 2012-12-12T06:10:35.463 に答える