C++Builderで扱える最大のバイト数は、System.UInt64で8バイトとなります。
C#(Visual Studio)では、BigIntegerという、可変長整数をサポートし、非常に大きな整数を扱うことができる数値型があります。
では、C++Builderで、BigInteger相当の大きな整数を扱うにはどうすればいいでしょうか?
C++Builderは、当然C++言語ですのでC++のライブラリが利用できます。調べてみると、Boostが128バイトまで扱える多倍長整数をサポートしていることが判りました。これを使用すれば、C#のBigIntegerの移植が可能です。
Boostライブラリィのインストール
最初、C++Builderには、Boostライブラリィが標準でインストールされていると思っていたのですが、
GetIt パッケージ マネージャを使用して組み込む必要がありました。
Boostライブラリィをインストールするには、メニューの「ツール」→「Gititパッケージマネージャ…」をクリックし、「Gititパッケージマネージャ」を開きます。
「Gititパッケージマネージャ」のインストール用のダイアログが表示されますので、”すべて”を選択し、検索BOXに”boost”を入力して検索するとBoostライブラリが表示されます。
Win32用とWin64用をインストールします。
Boostの多倍長整数のクラスの使用方法
基本的な使い方
boostjp : Boost日本語情報サイトに、Boost.Multiprecisionから提供される多倍長整数の、基本的な使い方の説明及びサンプルコードがあります。
- サンプルコード
以下のサンプルは、任意精度の符号あり多倍長整数であるboost::multiprecision::cpp_intクラスを使用して、100の階乗を求めるプログラムです。
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
namespace mp = boost::multiprecision;
int main()
{
mp::cpp_int x = 1;
for (unsigned int i = 1; i <= 100; ++i)
x *= i;
std::cout << x << std::endl;
}
Boost日本語情報サイト
boostjp : Boost日本語情報サイトです。
参考URL
参考URLです。