diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreter.java index 68d3c7f5..7fc76fa8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreter.java @@ -185,7 +185,7 @@ public class FormulaInterpreter case "DIVIDE": { List numbers = getNumberArgumentList(args, 2, variableInterpreter); - if(numbers.get(1) == null || numbers.get(1).equals(BigDecimal.ZERO)) + if(numbers.get(1) == null || numbers.get(1).compareTo(BigDecimal.ZERO) == 0) { return null; } @@ -194,7 +194,7 @@ public class FormulaInterpreter case "DIVIDE_SCALE": { List numbers = getNumberArgumentList(args, 3, variableInterpreter); - if(numbers.get(1) == null || numbers.get(1).equals(BigDecimal.ZERO)) + if(numbers.get(1) == null || numbers.get(1).compareTo(BigDecimal.ZERO) == 0) { return null; } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java index 4c3fd574..df84fd13 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/reporting/FormulaInterpreterTest.java @@ -118,7 +118,14 @@ class FormulaInterpreterTest extends BaseTest assertEquals(new BigDecimal("34.500"), interpretFormula(vi, "MULTIPLY(100,0.345)")); assertThat((BigDecimal) interpretFormula(vi, "DIVIDE(1,2)")).isCloseTo(new BigDecimal("0.5"), ZERO_OFFSET); + assertThat((BigDecimal) interpretFormula(vi, "DIVIDE_SCALE(1,2,0)")).isEqualTo(new BigDecimal("1")); + assertThat((BigDecimal) interpretFormula(vi, "DIVIDE_SCALE(1,2,0)")).isEqualTo(new BigDecimal("1")); + assertThat((BigDecimal) interpretFormula(vi, "DIVIDE_SCALE(1,2,3)")).isEqualTo(new BigDecimal("0.500")); + assertThat((BigDecimal) interpretFormula(vi, "DIVIDE_SCALE(1,2,4)")).isEqualTo(new BigDecimal("0.5000")); assertNull(interpretFormula(vi, "DIVIDE(1,0)")); + assertNull(interpretFormula(vi, "DIVIDE(1,0.0)")); + assertNull(interpretFormula(vi, "DIVIDE_SCALE(1,0,0)")); + assertNull(interpretFormula(vi, "DIVIDE_SCALE(1,0.0,1)")); assertEquals(new BigDecimal("0.5"), interpretFormula(vi, "ROUND(0.510,1)")); assertEquals(new BigDecimal("5.0"), interpretFormula(vi, "ROUND(5.010,2)"));