将一个较小的数字除以一个较大的数字给我0.0

时间:2013-02-03 19:37:53

标签: java math double

我正在做一个程序,根据测量的放射性计算先前时间点的无线电活动。

然而,如果半衰期与经过的时间相比非常大,那么我得到一个0.00作为答案,然后至少留下A= Ao,直到(times[i]-times[0])变大。

例如,如果(times[i]-times[0]) = 5Thalflife = 6540我想获得0.00076452599但是我得到的0.0是错误类型的两倍,或者是/给我这个问题的命令?

private double[]theoreticalVals(double activity) {
   /* below is an implementation of the activity decay 
    * calculation formula A= Ao/2^(t/Thalflife)
    * An array of values will be returned. 
    * The times array defines the length of the array and gives the point in time values
    */
 double Ao= activity; 
 double [] vals = new double[times.length];
 double a; 
 vals[0]=Ao;                            //initial activity
 for(int i = 1; i<times.length;i++){                
   a =(times[i]-times[0])/Hf;       //  
   double lowerhalfterm = Math.pow(.5,a);                   //  2-(^(t/Thalflife))
   vals[i]= Ao/lowerhalfterm;

}                                          // A=Ao/2^(t/Thalflife)

return vals; 
}

2 个答案:

答案 0 :(得分:3)

times可能是一个整数数组,Hf可能也是一个整数。您需要将其中一个变量的声明更改为浮动变量,例如double,或者您需要在计算中转换其中一个变量。

更改声明:

int Hf;

为:

double Hf;

或者在计算中投出:

(times[i]-times[0])/((double)Hf)

答案 1 :(得分:1)

你将int除以int,所以你使用整数除法。要进行双重划分,其中一个操作数至少必须是双重的:

double result = ((double) i1) / i2