一般的に、大量の実装は、BigintegerとBigDecimalの2つの方法で行われます。これらの2つの方法は、不変の任意の精度整数と不変の署名された任意の精密小数数(浮動小数点数)を表しています。主に高精度計算で使用されます。これらの2つのクラスは、Javaの高精度操作を簡単にします。ただし、この記事では、上記の2つの方法を通じてJavaで大規模な操作を導入していません。
主なアイデアは、2つの数字を文字列に入れてから、各番号を取り出し、配列に入れ、最後のビットから計算を開始し、追加を計算し、キャリーが運ばれるかどうかを判断します。キャリーは以前のビット+1です。長さが超えた場合は、新しい配列にコピーします。
コードは次のとおりです。
Public Class BigIntAdd {private int [] array; //配列//関数を宣言して、多数のパブリックストリングbigadd(bigintadd fisrtnum、bigintadd secondnum){string result = ""; boolean false = fals; //フラグを決定するためのフラグを決定するnull; //長い文字列を配列配列に入れます。なぜなら、計算結果はarrayone配列に配置する必要があるため、(fisrtnum.instance()。length> = secondnum.instance()。length){arrayone = fisrtnum.instance(); arraytwo = secondnum.instance(); secondnum.instance(); arraytwo = fisrtnum.instance();} for(int i = 0; i <arraytwo.length; i ++){if(arrayone [i] + arraytwo [i] <10){//キャリーなし、arrayone [i] = arrayone [i] + arrayone (arrayone [i] + arraytwo [i]> = 10){// arrayone [i] = arrayone [i] + arraytwo [i] -10; if((i + 1)<arrayone.length){arrayone [i + 1] = arrayone [i + 1] + 1; arraythree falg = true; arraythree = new int [arrayone.length + 1]; system.arraycopy(arrayone、0、arraythree、0、arrayone.length); arraythree [arrayon.length] = 1; // {for(int i:arraythree){result += i;}} else {for(int i:arrayone){result += i;}} // resurte new stringbuffer(result).reverse()。 {StringBuffer SB = new StringBuffer(num); String String = Sb.Reverse(); ToString(); // String Inversionを実装して計算array = new int [String.length()]; // stringを(int i = 0; i <string.length(); i ++){inte in in inte firs.fring. + 1));}} public static void main(string [] args){string result = bigintadd.bigadd(new bigintadd( "521111111")、new bigintadd( "40999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999結果:
要約します
上記は、2つの多数の追加コードの例を実装するJavaプログラミングに関するこの記事の内容全体です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!