2013-06-07 5 views
0

나는 복식의 지수의 정확성과 다음 코드에서 자신의 합계에 문제가 :복식과 코드 정확도 : 무엇이 잘못 되었습니까?

public static void main(String[] args) { 

    for(double A = 1; A <= 100; A++) 
    { 
     for(double B = 1; B <= 100; B++) 
     { 
      for(double C = 1; C <= 100; C++) 
      { 
       for(double x = 3; x <= 100; x++) 
       { 
        for(double y = 3; y <= 100; y++) 
        { 
         for(double z = 3; z <= 100; z++) 
         { 
          if((Math.pow(A, x) + Math.pow(B, y)) == (Math.pow(C, z))) 
          { 
           System.out.println(A+"^"+x+" + "+B+"^"+y+" = "+C+"^"+z); 
          } 
         } 
        } 
       } 
      } 
     } 
    } 

} 

하는 출력의 첫번째 다섯 개 용어는 다음과 같습니다

1.0^3.0 + 2.0^53.0 = 2.0^53.0 
1.0^3.0 + 2.0^54.0 = 2.0^54.0 
1.0^3.0 + 2.0^55.0 = 2.0^55.0 
1.0^3.0 + 2.0^56.0 = 2.0^56.0 
1.0^3.0 + 2.0^57.0 = 2.0^57.0 

그것은이다 "2.0^53.0"을 사용하여 "1.0^3.0"(기본적으로 "1.0")을 추가하면 이 아닌 것으로 간주됩니다.은 "2.0^53.0"과 같습니다. y 값에 문제가 있습니다.

내 조건문에 결함이 있거나 다른 원시 데이터 형식을 사용해야 할 수도 있습니다 ... 감사합니다.

답변

2

배정 밀도는 정확히 53 bits of mantissa입니다.

+0

내 코드를 수정하려면 어떻게해야합니까? – J0nathan

+1

@ J0nathan :'long' 또는'BigDecimal' /'BigInteger'를 사용하십시오. –

+0

감사합니다. – J0nathan