2011-01-26 4 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를 사용하여 핵심 클래스를 작성한 다음 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

또한 자바에 어두운 마술이 없으므로 새로운 객체는 새로운 객체 만 반환합니다. 그러므로 두 번째'a == b' 체크는'true'를 반환 할 수 없습니다. 또한,'add()'는'BigInteger' 인스턴스를 수정하지 않고 (결국 불변입니다.) 결과를 새로운 객체로 반환합니다. –

0

자바 연산자는 원시 데이터 형식에서만 작동하도록 설계되었습니다. 그들은 수업에 행동하지 않습니다. BigInteger는 클래스이므로, 산술 비교 및 ​​연산은 클래스 메소드를 통해서만 수행 될 수 있습니다.