2014-11-08 107 views
0

我想分割兩個完整的double值(即所有內存都填滿了高精度數的雙變量)。而且,操作的結果將被分配到一個雙變量中。NaN,Java麻煩

當我做這個過程時,這個返回給我NaN。

我在某個地方讀到兩個完整的double值之前,當它們自己相乘或相除時會導致一個很大的內存值,一個不能在雙變量中分配。

我對不對?

我該如何解決這個問題?

public class CoeficienteAngular { 

    public static double coefAngularImpar( int x/*Coeficiente 
    da longarina a qual se analiza*/,   double y/*Distância 
    entre as longarinas*/,      double z/*Somatorio*/){ 

     double beta; 
     double betaPrim; 

     betaPrim = (double) x/y; 
     beta = betaPrim/z; 

     return beta; 
    } 

    public static double coefAngularPar( int x/*Coeficiente 
    da longarina que se analiza*/,    double y/*Distância 
    entre as longarinas*/,      double z/*Somatório*/){ 

     double numerador, denominador, fatorCorrecao; 
     double beta; 

     int moduloL = Math.abs(x); 

     numerador = (double)(moduloL-1)+(double)(1/2); 
     denominador = y*z; 

     fatorCorrecao = 1;//Inicializando a variável 
     if(x>=0){ 
      fatorCorrecao = 1; 
     }else if(x<0){ 
      fatorCorrecao = -1; 
     } 

     beta = fatorCorrecao*(numerador/denominador); 
     return beta; 
    } 

} 
+0

什麼?你的意思是什麼?所有的記憶都充滿了高精度的數字_?請舉個例子。 – 2014-11-08 03:12:21

+0

我的意思是佔用所有小數位數。例如:0,333333333333333。我相信這是雙變量可能分配的最多小數位數。 – Sourisivre 2014-11-08 03:13:48

+0

再次,給我們一個例子。他們可以被0佔用。 – 2014-11-08 03:14:56

回答

0

不要使用雙打。爲避免精確度損失,請改用BigDecimalsee Javadoc)。您也可以閱讀post,這裏人們完全解釋了使用BigDecimal的原因。

+0

謝謝你,克拉爾。 – Sourisivre 2014-11-08 04:09:04