matheval / expression-evaluator-c-sharp

Matheval is a mathematical expressions evaluator library written in C#. Allows to evaluate mathematical, boolean, string and datetime expressions
https://matheval.org/
MIT License
110 stars 30 forks source link

Remainder operator is not correct for negative numbers #15

Open kbeal2k opened 1 year ago

kbeal2k commented 1 year ago

The RemainderOperator does not handle negative numbers the same way as the .net remainder operator.

These test fail.

            Expression expr4 = new Expression("5%-4");
            Assert.AreEqual(1M, expr4.Eval<decimal>());

            Expression expr5 = new Expression("-5%4");
            Assert.AreEqual(-1M, expr5.Eval<decimal>());

            Expression expr6 = new Expression("-5.2%2.0");
            Assert.AreEqual(-1.2M, expr6.Eval<decimal>());

See microsoft remainder operator doc