Skip to content
Advertisement

calculate the percentage increase or decrease in a list of values in java

i’m trying to build an data structures and algorithms program using java. and i wanna ask if anyone know How do i calculate the percentage increase or decrease in a array. i try this code–but apparently its not the correct way

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;
        }
}
    
import static test.testt.checkMov;

public class tester {

    public static void main(String[] args) 

        int[] arr = {1931534,1933628,1935714,1925709,1923754,1923578,1923049,1928556,1928289,1924857};


        int N = arr.length;

        // Calling function
        float result = checkMov(arr, N);

        System.out.println("Percentage change is = " + result + " %");

    }
}

Run-> Percentage change is = Infinity %

Answer

Here you’re dealing with the numbers, which could go in the larger values. Datatype float has limited range to handle the numbers between 3.40282347 x 10e38 and 1.40239846 x 10e-45. So change the method return type of checkMov to double. Also handle the values in double, which ranges between 1.7976931348623157 x 10e308 and 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 
    }
Advertisement