11

Java では、プリミティブ型のほとんどが符号付き (+/- を表すために 1 ビットが使用されます) であるため、型の制限を超えると、負の数などの予期しない結果が得られる可能性があります。

BigInteger にはパフォーマンスの問題があり、言語演算子の代わりに基本的な算術演算にクラス メソッドを使用する必要があるため (可読性を損なう)、これに BigInteger を使用するよりも良い解決策はありますか?

4

3 に答える 3

12

いいえ、これ以上の解決策はありません。long または double に収まらない値を扱う場合は、 のような参照型を使用する必要がありBigIntegerます。Java は演算子のオーバーロードをサポートしていません。

技術的には、署名された値と署名されていない値の間で何らかのマッピングを行うことができると思いますが、目標がクリーンでシンプルなコードである場合、これはまったく役に立ちません。

于 2010-05-05T20:10:40.260 に答える
5

Scala はまさにここでのソリューションです。その言語では、「演算子」は実際には固定されたメソッドであり、任意のクラスに対して定義できます。実際、あなたの場合、それらはすでに標準ライブラリにあります。したがって、特殊な数値表現の力を利用しながら、Java プリミティブ型のクリーンな構文を利用できます。

Scala は強化されており、Java コードと完全に相互運用できます。

于 2010-05-05T20:14:54.650 に答える
1

美しいビジネス ロジックを維持する唯一の方法は、Java クラスにコンパイルするスクリプト言語を使用することです。内部的には BigIntegers を使用できます。

于 2010-05-05T20:13:37.913 に答える