BigInteger
は比較のためにequals
しか持っていませんか?
<(より大きい)または<(より小さい)のような数式表記の代用がありますか? ^回答済み!BigIntegerを反復処理に使用する方法はありますか?
while
とfor
のように、繰り返しでBigInteger
を使用する方法はありますか?
BigInteger
は比較のためにequals
しか持っていませんか?
<(より大きい)または<(より小さい)のような数式表記の代用がありますか? ^回答済み!BigIntegerを反復処理に使用する方法はありますか?
while
とfor
のように、繰り返しでBigInteger
を使用する方法はありますか?
compareToメソッドを使用できます。
数式表記を使うことはできませんが、実際には==どちらを使うのも嫌になりますが、私は彼らがいくつかの重大なトリッキーを使わなければ失敗すると確信しています。
a = new BigInteger(500);
b = a;
if(a == b)
will always be true
b=new BigInteger(500);
if(a == b)
will never be true
if(a.equals(b))
will always work fine.
Javaが原料のこの種のための偉大な言語ではない - 私は実際のJavaを愛するが、トラブル複雑なクラスを実装して、複雑なクラスを開催して操作できるマトリックスを実装の多くを持つことになりました。
私の解決策は、Javaを使用してコアクラスを作成し、Groovyを使用してコアクラスを使用するクラスを作成することでした。特定の命名パターンに従うと、どのクラスでも任意の演算子を使用できます。
大きな数字を混乱させたいのであれば、groovyを使うだけで、変数の型を宣言しなくても、必要なものに自動的に昇格します。
'BigInteger'は整数だけを保持できるので、' 5.5'は動作しません。あなたはおそらく 'BigDecimal'を考えているでしょう。そして、たとえそれがBigDecimalであったとしても、[doubleをとるコンストラクタは、ほとんど常に悪い考えです!](http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal。 html#BigDecimal(double)) –
くそー、ありがとう。思っていませんでした - 私はSunが実際に何らかの暗い魔法を使ってBigInt(1から10まで)が同じ参照を実際に使うようにするトリックをしていると思うので、奇妙な数字を使いたいと思っていました。まあ、修正されます。 –
また、「新しい」が新しいオブジェクトを返すことを可能にする暗い魔法はJavaにはないことに注意してください。したがって、2番目の 'a == b'チェックは' true'を返すことはできません。また、 'add()'は 'BigInteger'インスタンスを変更しません(結局は不変です)。代わりに新しいオブジェクトとして結果を返します。 –
Java演算子は、プリミティブデータ型でのみ動作するように設計されています。彼らはクラスに作用しません。 BigIntegerはクラスなので、算術比較と演算はクラスメソッドでのみ行うことができます。
ありがとうございます!あなたは本当に本当に助けました – monkry