mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Fix division by zero (check bigDecimal.compareto, not equals 0)
This commit is contained in:
@ -185,7 +185,7 @@ public class FormulaInterpreter
|
||||
case "DIVIDE":
|
||||
{
|
||||
List<BigDecimal> 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<BigDecimal> 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;
|
||||
}
|
||||
|
@ -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)"));
|
||||
|
Reference in New Issue
Block a user