Skip to content

Commit 9625a40

Browse files
authored
Merge pull request eugenp#16833 from 3ga01/percentage-diff-of-two-numbers
Percentage Difference Between Two Numbers
2 parents ac6a678 + 4e60bdd commit 9625a40

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.baeldung.math.percentdiffbetweentwonumbers;
2+
3+
public class PercentDiffBetweenTwoNumbers {
4+
5+
public static double calculatePercentageDifference(double v1, double v2) {
6+
double average = (v1 + v2) / 2;
7+
if (average == 0) {
8+
throw new IllegalArgumentException("The average of v1 and v2 cannot be zero.");
9+
}
10+
return Math.abs((v1 - v2) / average) * 100;
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package com.baeldung.math.percentdiffbetweentwonumberstest;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
import com.baeldung.math.percentdiffbetweentwonumbers.PercentDiffBetweenTwoNumbers;
9+
10+
class PercentDiffBetweenTwoNumbersUnitTest {
11+
12+
@Test
13+
void whenCalculatePercentageDifferenceBetweenTwoNumbers_thenCorrectResult() {
14+
double v1 = 50.0;
15+
double v2 = 70.0;
16+
double expected = 33.33;
17+
double result = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2);
18+
assertEquals(expected, result, 0.01, "Percentage difference should be correctly calculated.");
19+
}
20+
21+
@Test
22+
void whenv1Andv2AreEqual_thenPercentageDifferenceIsZero() {
23+
double v1 = 50.0;
24+
double v2 = 50.0;
25+
double expected = 0.0;
26+
double result = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2);
27+
assertEquals(expected, result, "Percentage difference should be zero when both values are equal.");
28+
}
29+
30+
@Test
31+
void whenv1IsGreaterThanv2_thenCalculateCorrectPercentageDifference() {
32+
double v1 = 70.0;
33+
double v2 = 50.0;
34+
double expected = 33.33;
35+
double result = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2);
36+
assertEquals(expected, result, 0.01, "Percentage difference should be correctly calculated.");
37+
}
38+
39+
@Test
40+
void whenv2IsGreaterThanv1_thenCalculateCorrectPercentageDifference() {
41+
double v1 = 50.0;
42+
double v2 = 70.0;
43+
double expected = 33.33;
44+
double result = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2);
45+
assertEquals(expected, result, 0.01, "Percentage difference should be correctly calculated.");
46+
}
47+
48+
@Test
49+
void whenOneValueIsZero_thenCalculateCorrectPercentageDifference() {
50+
double v1 = 0.0;
51+
double v2 = 50.0;
52+
double expected = 200.0;
53+
double result = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2);
54+
assertEquals(expected, result, "Percentage difference should be correctly calculated when one value is zero.");
55+
}
56+
57+
@Test
58+
void whenAverageIsZero_thenThrowIllegalArgumentException() {
59+
double v1 = -50.0;
60+
double v2 = 50.0;
61+
assertThrows(IllegalArgumentException.class, () -> PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2),
62+
"Should throw IllegalArgumentException when the average of V1 and V2 is zero.");
63+
}
64+
65+
@Test
66+
void whenv1Andv2AreSwapped_thenPercentageDifferenceIsSame() {
67+
double v1 = 70.0;
68+
double v2 = 50.0;
69+
double expected = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v1, v2);
70+
double result = PercentDiffBetweenTwoNumbers.calculatePercentageDifference(v2, v1);
71+
assertEquals(expected, result, 0.01, "Percentage difference should be the same when v1 and v2 are swapped.");
72+
}
73+
}

0 commit comments

Comments
 (0)