在java中计算值列表中增加或减少的百分比

在java中计算值列表中增加或减少的百分比,java,algorithm,Java,Algorithm,我正在尝试使用java构建一个数据结构和算法程序。 我想问问是否有人知道 如何计算数组中增加或减少的百分比。 我尝试了这段代码,但显然这不是正确的方法 public class test{ static float checkMov(int arr[], int n) { float var1, var2, result = 0; var1 = arr[0]; var2 = arr[1];

我正在尝试使用java构建一个数据结构和算法程序。 我想问问是否有人知道 如何计算数组中增加或减少的百分比。 我尝试了这段代码,但显然这不是正确的方法

public class test{
    static float checkMov(int arr[], int n) {
            float var1, var2, result = 0;
    
            var1 = arr[0];
            var2 = arr[1];
    
            // Calculate successive change of 1st 2 change
            result = var1 + var2 + ((var1 * var2) / 100);
    
            // Calculate successive change
            // for rest of the value
            for (int i = 2; i < n; i++) {
                result = result + arr[i] + ((result * arr[i]) / 100);
            }
    
            return result;
        }
}
    
运行->
百分比变化是=无穷大%

这里您要处理的是数字,这些数字可能会有更大的值。数据类型
float
处理
3.4028347 x 10e38和1.40239846 x 10e-45之间的数字的范围有限。因此,将
checkMov
的方法返回类型更改为double。还要处理双精度
中的值,其范围介于
1.7976931348623157 x 10e308和4.9406564584124654 x 10e-324
之间

static double checkMov(int arr[], int n) {
        double var1, var2, result = 0;

        var1 = arr[0];
        var2 = arr[1];

        // Calculate successive change of 1st 2 change
        result = var1 + var2 + ((var1 * var2) / 100);

        // Calculate successive change
        // for rest of the value
        for (int i = 2; i < n; i++) {
            result = result + arr[i] + ((result * arr[i]) / 100);
        }

        return result; // This returns 7.0955315970304415E44 
    }
静态双重校验MOV(int-arr[],int-n){
双变量1,变量2,结果=0;
var1=arr[0];
var2=arr[1];
//计算前2次变化的连续变化
结果=var1+var2+((var1*var2)/100);
//计算连续变化
//对于剩余的价值
for(int i=2;i
var1+var2+((var1*var2)/100)
意味着什么?
float
对于您正在处理的数字来说,可能太小了。我会使用
double
double
。试过调试吗?你的见解是什么?非常好,谢谢你的帮助
static double checkMov(int arr[], int n) {
        double var1, var2, result = 0;

        var1 = arr[0];
        var2 = arr[1];

        // Calculate successive change of 1st 2 change
        result = var1 + var2 + ((var1 * var2) / 100);

        // Calculate successive change
        // for rest of the value
        for (int i = 2; i < n; i++) {
            result = result + arr[i] + ((result * arr[i]) / 100);
        }

        return result; // This returns 7.0955315970304415E44 
    }