2011-01-26 23 views

答えて

5

compareToメソッドを使用できます。

+0

ありがとうございます!あなたは本当に本当に助けました – monkry

1

数式表記を使うことはできませんが、実際には==どちらを使うのも嫌になりますが、私は彼らがいくつかの重大なトリッキーを使わなければ失敗すると確信しています。

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を使うだけで、変数の型を宣言しなくても、必要なものに自動的に昇格します。

+1

'BigInteger'は整数だけを保持できるので、' 5.5'は動作しません。あなたはおそらく 'BigDecimal'を考えているでしょう。そして、たとえそれがBigDecimalであったとしても、[doubleをとるコンストラクタは、ほとんど常に悪い考えです!](http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal。 html#BigDecimal(double)) –

+0

くそー、ありがとう。思っていませんでした - 私はSunが実際に何らかの暗い魔法を使ってBigInt(1から10まで)が同じ参照を実際に使うようにするトリックをしていると思うので、奇妙な数字を使いたいと思っていました。まあ、修正されます。 –

+0

また、「新しい」が新しいオブジェクトを返すことを可能にする暗い魔法はJavaにはないことに注意してください。したがって、2番目の 'a == b'チェックは' true'を返すことはできません。また、 'add()'は 'BigInteger'インスタンスを変更しません(結局は不変です)。代わりに新しいオブジェクトとして結果を返します。 –

0

Java演算子は、プリミティブデータ型でのみ動作するように設計されています。彼らはクラスに作用しません。 BigIntegerはクラスなので、算術比較と演算はクラスメソッドでのみ行うことができます。

関連する問題