2

C#で2つの64桁の10進数をオーバーフローせずに乗算するにはどうすればよいですか?

4

4 に答える 4

4

64の 10 進数が必要で、それらが整数の場合は、System.Numerics.BigIntegerstruct を使用できます (System.Numerics.dllアセンブリへの参照が必要です)。

BigInteger firstNumber = BigInteger.Parse("63518439492097324687235465876298368764576527346564625480");
BigInteger secondNumber = BigInteger.Parse("84890247648975285765484902890273086475254764765147643611");
BigInteger product = firstNumber * secondNumber;
于 2013-02-17T10:31:47.260 に答える
0

最後の数字(文字)を取得し、それを他の文字からのすべての数字で乗算するよりも、最初にその数字を文字列に変換する(したがって、2つの別々の文字列)任意の数字の計算を(必要な限り)行うことができると思います(学校で習ったのと同じように)などで、それを最終的なスコア番号に追加します(これも文字列として)。私はこれができることを知っており、最初は難しいロジックになるでしょうが、この関数を作成すると、任意の数を掛けることができます:)

于 2013-02-17T11:02:38.977 に答える
0

整数の場合は、System.Numerics の BigInteger クラスを使用します (System.Numerics.dll を参照してください)。

そうでない場合は、Codeplex に BigRational クラスがあります。System.Numerics にあるはずでしたが、キックされました。リンク: http://bcl.codeplex.com/releases/view/42782

于 2013-02-17T11:30:34.690 に答える
0

decimal2 つの数値の乗算の結果を格納するために常に使用できlongます。

long bigNumber = 12345678L;
long anotherBigNumber = 23456789L;
decimal result = bigNumber * anotherBigNumber;
于 2013-02-17T10:31:45.460 に答える