C#のBigIntegerクラスとは?巨大な数値を扱う方法と主なコンストラクタを解説
C#で通常の整数型(int や long)では表現できない非常に大きな数値を扱いたい場合には、BigInteger 構造体を使用します。BigInteger を利用するには、プロジェクトに System.Numerics アセンブリへの参照を追加する必要があります。
BigInteger は System.Numerics.BigInteger 名前空間に定義されており、理論上はメモリが許す限り無限に近い大きさの整数を扱うことができます。暗号処理や科学技術計算など、桁あふれ(オーバーフロー)を気にせず正確な計算を行いたい場面で特に役立ちます。
BigInteger の構文
BigInteger の宣言は以下のように定義されています。
[SerializableAttribute] public struct BigInteger : IFormattable, IComparable, IComparable<BigInteger>, IEquatable<BigInteger>
BigInteger はクラスではなく構造体として実装されており、IFormattable、IComparable、IEquatable などの標準インターフェースを実装しているため、文字列変換や比較、等価判定などの操作も直感的に行えます。
使用例
long 型の最大値同士を掛け合わせる例を見てみましょう。通常の long 型ではオーバーフローしてしまいますが、BigInteger を使えば正確な結果を得られます。
BigInteger num = BigInteger.Multiply(Int64.MaxValue, Int64.MaxValue);
また、double 型の最大値から BigInteger インスタンスを作成することも可能です。
BigInteger num = new BigInteger(double.MaxValue);
主なコンストラクタ
BigInteger には、さまざまな型の値からインスタンスを生成できる複数のコンストラクタが用意されています。代表的なものを以下にまとめます。
| 番号 | コンストラクタと説明 |
|---|---|
| 1 | BigInteger(Byte[]) バイト配列内の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。 |
| 2 | BigInteger(Decimal) Decimal(10進数)型の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。 |
| 3 | BigInteger(Double) 倍精度浮動小数点数(Double)型の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。 |
| 4 | BigInteger(Int32) 32ビット符号付き整数(Int32)型の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。 |
このほかにも、Int64(64ビット符号付き整数)や Single(単精度浮動小数点数)を受け取るコンストラクタが用意されています。用途に応じて適切なコンストラクタを選択することで、さまざまなデータソースから大きな整数値を安全に扱えるようになります。
-
【JavaScript】オブジェクトがクラスのインスタンスかどうかを判定する方法
JavaScriptでは、instanceof 演算子を使うことで、あるオブジェクトが特定のクラス(コンストラクタ関数)のインスタンスであるかどうかを簡単に判定できます。instanceof 演算子とは?instanceof 演算子は、左辺のオブジェクトが右辺に指定したコンストラクタ関数のプロトタイプチェーン上に存在するかどうかを評価し、その結果を真偽値(true / false)として返します。この仕組みを利用することで、オブジェクトがどのクラスから生成されたものなのかを実行時に動的にチェックできます。コード例以下は、ボタンをクリックしたときに student1 オブジェクトが Studen
-
C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説
C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System